在基于光标的回收站视图

时间:2016-07-05 13:26:54

标签: java android cursor android-recyclerview

我有一个带有光标的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);

在您的活动中。

0 个答案:

没有答案