RecyclerView在删除

时间:2017-01-27 13:56:54

标签: sqlite animation android-recyclerview android-cursoradapter

从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方法中。

如何显示动画以防止列表显示新的实际不存在的项目?

谢谢!

1 个答案:

答案 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);
    }

问候!