我有一个带有光标的RecyclerView。我在滑动后删除项目(在ItemTouchHelper.SimpleCallback中) - 从数据库中删除,更改光标然后调用notifyItemRemoved。它工作正常,但当所有项目都在屏幕上时, the last one is animating. 我的代码:
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
...
viewHolder.getAdapter().removeFromDb(viewHolder.getAdapterPosition());
viewHolder.getAdapter().removeItem(viewHolder.getAdapterPosition());
}
并在我的适配器内:
public void removeItem(int adapterPosition) {
notifyItemRemoved(adapterPosition);
}
public void removeFromDb(int adapterPosition) {
DBHelper db = ...
cursor.moveToPosition(adapterPosition);
db.openDB();
db.removeItem(...);
changeCursor(db.newCursor...);
db.closeDB();
}
public void changeCursor(Cursor _new) {
cursor.close();
cursor = _new;
}
我看到了很多其他问题,最简单的解决方案是将整个数据设置为ArrayList,但我认为这不是最好的主意。在我看来,将数据重新加载到光标有问题,但我不知道如何解决它。
已解决:您必须添加
recyclerView.setHasFixedSize(true);
在您的活动中。