Я удаляю элемент списка с помощью PopupMenu в моем RecyclerViewAdapter, но когда элемент удаляется, он остается в базе данных Firebase.
Это на onBindViewHolder на RecyclerAdapter
holder.opcionesButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//creating a popup menu
PopupMenu popup = new PopupMenu(context, holder.opcionesButton);
//inflating menu from xml resource
popup.inflate(R.menu.menu_edit);
//adding click listener
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.edit_item:
//handle menu1 click
break;
case R.id.delete_item:
tareasList.remove(position);
notifyItemRemoved(position);
Toast.makeText(context, "Tareas eliminada!", Toast.LENGTH_SHORT).show();
break;
}
return false;
}
});
//displaying the popup
popup.show();
}
});
И это на MainFragment
final Query tareasQuery = mTareasDatabase.child(userId);
tareasQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Tareas tareas = new Tareas();
tareas.setFecha(dataSnapshot.getValue(Tareas.class).getFecha());
tareas.setDescripcion(dataSnapshot.getValue(Tareas.class).getDescripcion());
tareas.setLista(dataSnapshot.getValue(Tareas.class).getLista());
tareas.setPrioridad(dataSnapshot.getValue(Tareas.class).getPrioridad());
mTareasList.add(tareas);
mTareasAdapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
String tareasId = dataSnapshot.getValue(Tareas.class).getTareasId();
mTareasDatabase.child(userId).child(tareasId).removeValue();
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
String tareasId = dataSnapshot.getValue(Tareas.class).getTareasId();
mTareasDatabase.child(userId).child(tareasId).removeValue();
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Все работает нормально, кроме того, что не удаляет его из базы огня
Решение
Одновременное удаление предмета из пожарной базы и окна рециркуляции
case R.id.delete_item:
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
String tareasId = tareas.getTareasId();
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userId = user.getUid();
DatabaseReference databaseReference = firebaseDatabase.getReference("Tareas")
.child(userId).child(tareasId);
databaseReference.removeValue();
tareasList.remove(position);
notifyItemRemoved(position);
Toast.makeText(context, "Tareas eliminada!", Toast.LENGTH_SHORT).show();
break;