Я реализовал функцию удаления и удаления в моем RecyclerView. Но проблема в том, что когда я удаляю элемент, предыдущий элемент поднимается вверх, а ниже этого элемента я вижу один и тот же элемент за несколько секунд, но после удаления только одного элемента (предыдущий). Также я попытался использовать adapter.notifyDataSetChanged(), но когда я вытащил элемент, я могу увидеть этот элемент на несколько секунд в предыдущей позиции и после удаления элемента менее 1 секунды.Почему notifyItemRemoved работает медленно?
Так, например, у меня есть список
- Список item1
- Список item2
После салфетки и вызвать notifyItemRemoved() и я вижу такой список 1 сек
- Список item2
- Элемент списка2
И, наконец
- Список item2
Вот код
ItemTouchHelper swipeToDismissTouchHelper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(
ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
// callback for drag-n-drop, false to skip this feature
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
// callback for swipe to dismiss, removing item from data and adapter
int itemPosition = viewHolder.getAdapterPosition();
Log.v("Position", Integer.toString(itemPosition));
adapter_.removeItem(itemPosition);
}
});
swipeToDismissTouchHelper.attachToRecyclerView(chatsRecyclerView_);
А вот метод в моем адаптере
public void removeItem(int position){
Cursor cursor = getCursor();
if (cursor.getCount() != 0) {
Log.v("Size", Integer.toString(cursor.getCount()));
cursor.moveToPosition(position);
String chatIdOnServer = cursor.getString(cursor.getColumnIndex(MegaFleetDatabaseOpenHelper.ChatsTable.ID_ON_SERVER));
context_.startService(ChatsInfoUpdateService.createLeaveChatIntent(this.context_, chatIdOnServer));
ChatsTableHelper.deleteChat(this.context_, chatIdOnServer);
// this.notifyDataSetChanged();
this.notifyItemRemoved(position);
}
}