每次都会调用RecyclerView ItemTouch侦听器

时间:2018-02-13 09:24:21

标签: android android-recyclerview ontouchlistener swiperefreshlayout

我在RecyclerView的布局中实施了SwipeRefreshLayout。我找到RecyclerView,设置其适配器以及在方法内调用addOnItemTouchListener()。每次刷新SwipeRefreshLayout时都会调用此方法。
在Touch Listener中,调用并显示AlertDialog
每次我在SwipeRefreshLayout刷新时,它似乎都在添加一个Touch Listener。最终会发生的是AlertDialog现在多次显示,具体取决于您刷新的次数。
我怎样才能解决这个问题,即使刷新对话只显示一次?:

private void initRecyclerView() {
    RecyclerView ticketRecyclerView = (RecyclerView) findViewById(R.id.recycler_tickets);
    ticketsAdapter = new TicketsAdapter(this);
    ticketRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    ticketRecyclerView.setAdapter(ticketsAdapter);
    ticketRecyclerView.addOnItemTouchListener(new RecyclerTouchListener(this, ticketRecyclerView, new ClickListener() {
}
}

1 个答案:

答案 0 :(得分:0)

每次刷新时,都会添加OnItemTouchListener。这不会取代以前添加的侦听器;它只是增加了它们。

要更正此问题,您必须在刷新或remove the last one时不要添加其他触控侦听器。

  

removeOnItemTouchListener

     

void removeOnItemTouchListener(RecyclerView.OnItemTouchListener listener)

     

删除RecyclerView.OnItemTouchListener。它将无法再拦截触摸事件。