【发布时间】:2019-09-14 10:31:54
【问题描述】:
总的来说,我是 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();
}
});
这里的回调是我自己的回调类的一个对象。
我正在尝试了解如何始终保持实体更新。
有没有一种方法可以保留对我创建的实体对象的引用,并在使用 addValueEventListner 在数据库中更新对象时更新它,以便它反映在整个应用程序中?我了解回收站视图中的数据会自动更新。我的问题不是针对回收者视图的情况。
如果有这样的方法,那么我将如何处理不同的代码为同一个数据库对象创建不同的客户端对象的情况?有没有办法在客户端中对每个数据库对象强制执行单个对象?
我希望我的问题不是含糊的。
编辑 1:
基于Comment,添加简约的数据库结构。还有更多复杂的结构,例如“消息”(包含列表等)。
编辑 2:
我了解 addValueEventListner 将为数据库中的每次更新触发 onDataChange 方法。我的问题是如何使本地对象保持最新以及如何为客户端中的每个数据库对象强制执行单个本地对象。请阅读原始问题以获取更多详细信息。
【问题讨论】:
-
你能告诉你数据库结构吗?
-
添加了在“EDIT 1”中为测试创建的部分数据库的数据库结构。感谢您的帮助。
-
“如何使本地对象保持最新以及如何为客户端中的每个数据库对象强制执行单个本地对象”是什么意思?请回复@。
标签: java android firebase firebase-realtime-database