Как я могу удалить конкретный элемент из списка, когда удаляются данные из базы данных Firebase Realtime? - PullRequest
0 голосов
/ 16 декабря 2018

Когда данные в базе данных реального времени удаляются, я хочу также удалить данные из списка.Я написал следующий код, но он не работает.Кто-нибудь может мне помочь?

        @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 голосов
/ 16 декабря 2018

Вам необходимо сохранить ключи элементов 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...