У меня возникла проблема с базой данных Firebase Realtime в моем приложении для Android.ValueEventListener инициировал onDataChange метод только один раз
Я пытаюсь обновить список в режиме реального времени. Но обновление работает только при запуске приложения. Он не обновляется автоматически. Таким образом, мне нужно перезапустить приложение, когда требуется обновление.
Есть ли недостающая часть? Я ценю любую помощь. Спасибо
Проблема: Слушатель запускается onDataChange
метод только в перезагрузке приложения. Данные верны. Но после этого слушатель не работает.
Код:
mRef = FirebaseDatabase.getInstance().getReference();
mPostRef = mRef.child(DbUtils.POST_CHILD);
mPostRef.keepSynced(true);
mPostRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<Post> objList = new ArrayList<>();
for(DataSnapshot objSnapShot: dataSnapshot.getChildren()){
Post obj = objSnapShot.getValue(Post.class);
obj.setKey(objSnapShot.getKey());
objList.add(obj);
}
mAdapter.addAllAndNotify(objList);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.i("Posts", "Listener was canceled");
}
});
Вы уверены, что данные изменяются? Попробуйте использовать консоль Firebase для изменения данных. Я запускал ваш код с версией 10.0.1, а onDataChange() срабатывает при изменении данных. –
Я изменил данные в консоли. Код не работает. Обновляется ли ваша информация при каждом изменении? (Я использую 9.8.0, попробую с 10.0.1). Спасибо за вашу помощь. –
Добавьте инструкцию 'Log' в' onDataChange() ', чтобы увидеть, когда срабатывает обратный вызов. –