Я использовал Recycleview, используя cardivew со списком данных и кнопкой, чтобы удалить любое значение. когда я нажимаю кнопку, он удаляет значение из базы данных Firebase, но текст и строка остаются в адаптере приложения, но только когда я закрываю действие, возвращаясь и открывая снова, строка становится пустой.
Я использовал метод ниже в двух местах каждый раз (я также показал в коде), но он не работает
bookslist.remove(position);
notifyDataSetChanged();
Как я могу мгновенно обновить recycleview, когда я нажимаю кнопку удаления
Вот мой код
public class SubjectBooksAdapter extends RecyclerView.Adapter<SubjectBooksAdapter.MyViewHolder> {
ArrayList<Books> bookslist;
FirebaseDatabase database;
DatabaseReference dbreference;
public SubjectBooksAdapter(ArrayList<Books> bookslist){
this.bookslist = bookslist;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout,parent,false);
return new MyViewHolder(v);
}
public class MyViewHolder extends RecyclerView.ViewHolder {
Button mSolved;
MyViewHolder(final View itemView) {
super(itemView);
database = FirebaseDatabase.getInstance();
dbreference = database.getReference("roomrequest");
dbreference.keepSynced(true);
mSolved = (Button) itemView.findViewById(R.id.book_solved);
mSolved.setTransformationMethod(null);
fauth = FirebaseAuth.getInstance();
}
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
database = FirebaseDatabase.getInstance();
dbreference = database.getReference("roomrequest");
holder.mSolved.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference classicalMechanicsRef = rootRef.child("roomrequest").child("request").child(g.getRequestid());
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
dataSnapshot.getRef().removeValue();
bookslist.remove(position); \\ Solution One
notifyDataSetChanged(); \\ Solution One
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
classicalMechanicsRef.addListenerForSingleValueEvent(valueEventListener);
bookslist.remove(position); \\ Solution Two
notifyDataSetChanged(); \\ Solution Two
}
});
}
@Override
public int getItemCount() {
return bookslist.size();
}
}