从RecyclerView中删除项目时遇到问题(与SQLite数据库链接)。项目删除成功后,它会显示动画,然后项目重新出现在底部(也有一个奇特的动画)。 当我检查数据库时,它实际上删除了该行。
我可以通过每次删除项目时再次创建适配器来解决这个问题,但随后动画就消失了。
这是我的代码:
适配器的方法:
public void removeItem(int position){
db = new DBAdapter(context);
db.open();
mCursorAdapter.getCursor().moveToPosition(position);
int idnota = mCursorAdapter.getCursor().getInt(0);
db.borra_nota(idnota); //it deletes the row (delete_note)
db.close();
}
在我的主要活动中:
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
//if (direction == ItemTouchHelper.LEFT) {
listAdapter.removeItem(position);
listAdapter.notifyItemRangeChanged(position, listAdapter.getItemCount());
listAdapter.notifyItemRemoved(position);
我的初始解决方案(但没有动画)看起来像这样:
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
sticky = (RecyclerView) findViewById(R.id.lista_notas);
linearLayoutManager = new LinearLayoutManager(MainActivity.this);
sticky.setLayoutManager(linearLayoutManager);
listAdapter = new ListAdapter(MainActivity.this);
sticky.setAdapter(listAdapter);
当然,将“removeItem”放在适配器的remove方法中。
如何显示动画以防止列表显示新的实际不存在的项目?
谢谢!
答案 0 :(得分:0)
好的,解决了!
问题在于我删除了行而不是CursorAdapter。
我的ListAdapter中的方法现在正在运行,如下所示:
public void removeItem(int position){
db = new DBAdapter(context);
db.open();
mCursorAdapter.getCursor().moveToPosition(position);
int idnota = mCursorAdapter.getCursor().getInt(0);
db.borra_nota(idnota); //it deletes the row (delete_note)
items = db.consulta_todos(); //select all from db again
mCursorAdapter.changeCursor(items);
}
问候!