此问题可能是由于 ItemTouchHelper.Callback 在拖动项目时没有及时更新 RecyclerView 而导致的。解决这个问题的一种方法是手动调用 RecyclerView 的 “scrollToPosition()” 方法,以确保被拖动的项不会被遮挡。
以下是一个例子,可以在 Recyclerview 的 ItemTouchHelper.Callback 中使用:
ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(
ItemTouchHelper.UP | ItemTouchHelper.DOWN, 0) {
@Override
public boolean onMove(
RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
RecyclerView.ViewHolder target) {
// recyclerView.scrollToPosition(target.getAdapterPosition());
int fromPosition = viewHolder.getAdapterPosition();
int toPosition = target.getAdapterPosition();
mAdapter.notifyItemMoved(fromPosition, toPosition);
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
mAdapter.notifyItemRemoved(viewHolder.getAdapterPosition());
}
};
在调用“scrollToPosition()”之前,确保取消注释该行,以便更新 RecyclerView。
希望这可以解决你的问题。