Вы не можете вызывать команду notify dataset между адаптированными, чтобы сообщить об обновлении списка после удаления кода.Я бы не хотел помещать подобный код в функцию onbindviewholder () адаптера представления переработчика.Сделайте функцию в своей деятельности, чтобы удалить запись из базы данных, после того, как она удалена, вызовите notifydatasetchanged на адаптере.Не забудьте вызвать это в главном потоке, когда вы вернетесь из фонового потока для db.Создайте интерфейс и передайте элемент, который необходимо удалить из адаптера, в действие и запишите в нем логику удаления.
Обновление:
Вы можете сделать этотаким образом:
Объявите интерфейс:
public interface MyInterface{
public void foo(int deleteThisId);
}
Позвольте вашей активности реализовать его:
public class MyActivity extends Activity implements MyInterface{
//Somewhere in on create where you init the adapter
adapter = MyAdapter(this); // where this is the instance for the interface which will be used in adapter
public void foo(int deleteThisId){
//do stuff with deleteThisId
//when finished with delete operation
adapter.notifyDatasetChanged();
}
}
Затем передайте свою активность MyAdater:
public MyAdapter extends RecyclerView.Adapter<>{
private MyInterface listener;
public MyAdapter(MyInterface listener){
this.listener = listener;
}
}
И в списке onClick onBindViewHolder () в адаптере, когда вам нужно вызвать этот метод Activity:
listener.foo(idToBeDeleted);