当删除实时数据库中的数据时,我也想从列表中删除数据。我写了下面的代码,但是不起作用。 有没有人可以帮助我?
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
TodoItem todoItem = dataSnapshot.getValue(TodoItem.class);
todoItems.add(todoItem);
adapter.setTodoItems(todoItems);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
TodoItem todoItem = dataSnapshot.getValue(TodoItem.class);
todoItems.remove(todoItem);
adapter.setTodoItems(todoItems);
}
答案 0 :(得分:1)
您需要将数据库中TODO项的密钥保留在onChildAdded
中。然后,在调用onChildRemoved
时,您可以按其键查找项目的位置,并根据其位置将其从todoItems
列表中删除。
所以在onChildAdded
中:
todoItems.add(todoItem);
todoItemKeys.add(dataSnapshot.getKey());
然后在onChildRemoved
中输入:
int index = todoItemKeys.indexOf(dataSnapshot.getKey());
todoItems.remove(index);
todoItemKeys.remove(index);