2
我在使用ItemTouchHelper與我的RecyclerView中的SpannedGridLayoutManager組合時遇到問題,拖動到拖動旁邊的項目時過早結束拖動。我知道這是一個糟糕的佈局管理器,因爲它可以和其他佈局管理器一起工作,沒有任何問題。帶有SpannedGridLayoutManager的ItemTouchHelper - RecyclerView問題
有人已經這樣做了嗎?
我在使用ItemTouchHelper與我的RecyclerView中的SpannedGridLayoutManager組合時遇到問題,拖動到拖動旁邊的項目時過早結束拖動。我知道這是一個糟糕的佈局管理器,因爲它可以和其他佈局管理器一起工作,沒有任何問題。帶有SpannedGridLayoutManager的ItemTouchHelper - RecyclerView問題
有人已經這樣做了嗎?
的onSelectedChanged(RecyclerView.ViewHolder,INT)回調提供了當前actionState信息: - ACTION_STATE_IDLE: - ACTION_STATE_DRAG - ACTION_STATE_SWIPE
所以,你可以跟蹤訂單是否改變,並且狀態發生變化時ACTION_STATE_IDLE,你可以做你需要做的!
像這樣實現一個回調類。
class CardsTouchHelperCallback extends ItemTouchHelper.Callback {
...
@Override
public boolean onMove(RecyclerView recyclerView,
RecyclerView.ViewHolder viewHolder,
RecyclerView.ViewHolder target) {
int fromPosition = viewHolder.getAdapterPosition();
int toPosition = target.getAdapterPosition();
dragFrom = fromPosition;
dragTo = toPosition;
mOrderChanged = true;
return false;
}
@Override
public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
super.onSelectedChanged(viewHolder, actionState);
if (actionState == ItemTouchHelper.ACTION_STATE_IDLE && mOrderChanged) {
//doSomething();
touchHelperAdapter.onItemMove(dragFrom, dragTo);
mOrderChanged = false;
}
}
}