[英]ItemTouchHelper and SwipeRefreshLayout (RecyclerView)
我想使用v7設計庫中的新ItemTouchHelper。 我在SwipeRefreshLayout中使用它。
問題是,使用SwipeRefreshLayout,滑動解除的動畫是錯誤的和錯誤的。
誰知道如何解決這個問題?
只要您正在滑動,就可以禁用SwipeRefreshLayout。
final ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback() {
@Override
public int getMovementFlags(RecyclerView recyclerView, ViewHolder viewHolder) {
return makeMovementFlags(0, ItemTouchHelper.START | ItemTouchHelper.END);
}
@Override
public boolean onMove(RecyclerView recyclerView, ViewHolder viewHolder, ViewHolder target) {
return false;
}
@Override
public void onSwiped(ViewHolder viewHolder, int direction) {
// do something
}
@Override
public void onSelectedChanged(ViewHolder viewHolder, int actionState) {
super.onSelectedChanged(viewHolder, actionState);
final boolean swiping = actionState == ItemTouchHelper.ACTION_STATE_SWIPE;
swipeRefreshLayout.setEnabled(!swiping);
}
});
itemTouchHelper.attachToRecyclerView(recyclerView);
其中之一:
/**
* Notify the widget that refresh state has changed.
* method to avoid bug in setRefreshing(boolean)
* Do not call this when refresh is triggered by a swipe gesture.
* @param swipeRefreshLayout - layout, take care not to pass null parameter
* @param isRefreshing - whether or not the view should show refresh progress.
*
*/
public static void setRefreshing(final SwipeRefreshLayout swipeRefreshLayout, final boolean isRefreshing) {
swipeRefreshLayout.post(new Runnable() {
@Override
public void run() {
swipeRefreshLayout.setRefreshing(isRefreshing);
}
});
}
其他一些可能性:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.