0

RecyclerView(SQLite dbにリンクされている)から項目を削除するときに問題があります。アイテムの削除が成功すると、アニメーションが表示され、アイテムが下部に再び表示されます(ファンシーなアニメーションもあります)。 データベースをチェックすると、実際に行が削除されました。RecyclerViewは削除時に望ましくない項目を追加します

私はアイテムを削除するたびにアダプタを作成し直すことでこれを解決できましたが、アニメーションは消えました。ここで

は私のコードです:アダプターの

方法:私の主な活動インサイド

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); 


、アダプターのremoveメソッド内でいわゆる「removeItem」を入れて。

アニメーションを表示してリストに新しく実際に存在しないアイテムが表示されないようにするにはどうすればよいですか?

ありがとうございました!

答えて

0

OK、解決済み!

問題は、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); 
    } 

挨拶を!

関連する問題