RecyclerView ItemTouch Listener 每次都会被调用
RecyclerView ItemTouch Listener gets called everytime
我在具有 SwipeRefreshLayout
的布局中实现了 RecyclerView
。我找到 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() {
}
}
每次刷新,都会添加一个OnItemTouchListener
。这不会替换之前添加的侦听器;它只是增加了它们。
要更正此问题,您将不得不在刷新时不添加额外的触摸侦听器,或者 remove the last one。
removeOnItemTouchListener
void removeOnItemTouchListener (RecyclerView.OnItemTouchListener listener)
Remove an RecyclerView.OnItemTouchListener. It will no longer be able to intercept touch events.
我在具有 SwipeRefreshLayout
的布局中实现了 RecyclerView
。我找到 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() {
}
}
每次刷新,都会添加一个OnItemTouchListener
。这不会替换之前添加的侦听器;它只是增加了它们。
要更正此问题,您将不得不在刷新时不添加额外的触摸侦听器,或者 remove the last one。
removeOnItemTouchListener
void removeOnItemTouchListener (RecyclerView.OnItemTouchListener listener)
Remove an RecyclerView.OnItemTouchListener. It will no longer be able to intercept touch events.