Я новичок в Android и Java в целом.
Я пытаюсь создать приложение для Android, в котором мои объекты хранятся в базе данных Firebase в реальном времени. По запросу я извлекаю объекты из базы данных, используя addListnerForSingleValueEvent.
mDatabase.child(itemType).child(id).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
T entity = dataSnapshot.getValue(typeParameterClass);
callback.onSuccess(entity);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
callback.onFailure();
}
});
Здесь callback является объектом моего собственного класса обратного вызова.
Я пытаюсь понять, как постоянно обновлять сущность.
есть ли способ сохранить ссылку на созданный мной объект сущности и обновить ее при обновлении объекта в базе данных, используя addValueEventListner, чтобы она отражалась во всем приложении? Я понимаю, что в представлении переработчика данные обновляются автоматически. Мой вопрос не касается случая с переработчиком.
если есть такой способ, то как бы я справился с ситуацией, когда разные фрагменты кода создают разные клиентские объекты для одного и того же объекта базы данных? Есть ли способ применения одного объекта на объект базы данных в клиенте?
Надеюсь, мои вопросы не расплывчаты.
РЕДАКТ. 1:
На основе комментария добавлена минималистичная структура базы данных. Есть больше структур, таких как «сообщения», которые являются сложными (содержит список и т. Д.).
РЕДАКТИРОВАТЬ 2:
Я понимаю, что addValueEventListner будет запускать метод onDataChange для каждого обновления в базе данных. Мой вопрос заключается в том, как поддерживать локальный объект в актуальном состоянии и как применять один локальный объект для каждого объекта базы данных в клиенте. Пожалуйста, прочитайте оригинальный вопрос для более подробной информации.