删除Firebase实时数据库中的数据后,如何从列表中删除特定项目?

时间:2018-12-16 15:33:02

标签: android firebase-realtime-database

当删除实时数据库中的数据时,我也想从列表中删除数据。我写了下面的代码,但是不起作用。 有没有人可以帮助我?

        @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);
        }

1 个答案:

答案 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);