Я создаю приложение для Android, сохраняю данные в базе данных Firebase и получаю их, но когда пользователь добавляет что-то новое, данные не отображаются в приложении до тех пор, пока пользователь не выйдет и снова не войдет в приложение.
я пробую это
@Override
protected void onRestart() {
super.onRestart();
adapter.notifyDataSetChanged();
}
* пользователь добавляет данные, переходя к другому действию. Я хочу обновить данные в любой момент, когда данные добавляются без приложения и снова вводятся. вот как я устанавливаю данные в адаптер
DatabaseReference myRef = FirebaseDatabase.getInstance().getReference();
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
for (DataSnapshot d : ds.getChildren()) {
data.add(d.getValue(game.class));
}
adapter = new allAdapter(data);
rv.setAdapter(adapter);
allGamesAdapter.notifyDataSetChanged();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(MainActivity.this, "error", Toast.LENGTH_SHORT).show();
}
Я хочу обновить данные в любой момент, данные добавляются без приложения и снова вводятся.
Вы ищете функцию реального времени базы данных Firebase Realtime. Чтобы получать обновления в режиме реального времени, вы должны изменить вызов на addListenerForSingleValueEvent()
с addValueEventListener()
. То, что вы делаете сейчас, вы получаете данные только один раз, отсюда и такое поведение. Для получения дополнительной информации, пожалуйста, проверьте официальную документацию:
Если вы столкнулись с другой проблемой, задайте новый вопрос, используя собственный MCVE, чтобы я и другие разработчики Firebase могли вам помочь.
извините, у меня были дела, спасибо, это помощь, но это вызывает другие проблемы.