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


Конечно, поставив «RemoveItem» и так внутри метода удалить адаптера.

Любое представление о том, как показать анимацию, предотвращающую список, чтобы показать новый и фактически неистребимый элемент?

Спасибо!

ответ

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

Привет!

Смежные вопросы