我想要什么?
我想从 Firebase 数据库中检索按插入顺序排列的对象列表。
如何将对象添加到 Firebase 数据库中的列表?
mRefUser.push().setValue(new MessageItem());
mRefUser.push().setValue(new MessageItem());
.
.
mRefUser.push().setValue(new MessageItem());
它是如何添加的?
Firebase 将每个对象存储为 HashMap 中的键值对。
![enter image description here](https://i.stack.imgur.com/WIer3.png)
我如何检索这些值?
mFireBaseRefnew.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
final Map<String, MessageItem> messageMap = new LinkedHashMap<String, MessageItem>();
if (dataSnapshot != null && dataSnapshot.getValue() != null) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
HashMap<String,MessageItem> messageMap = (HashMap<String, MessageItem>) postSnapshot.getValue();
Collection<MessageItem> messageItems = messageMap.values() ;
List<MessageItem> messageItemList = new ArrayList<MessageItem>();
messageItemList.addAll(messageItems);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
我得到什么?
![enter image description here](https://i.stack.imgur.com/cPwfe.png)
最后注意事项:-
哈希图键是随机顺序的。有什么方法可以获取链接哈希图而不是哈希图。我不想存储密钥,因为数据库正在维护顺序,应该有某种方法可以使它们按相同的顺序排列,但我不知道如何获取它们。
你读过文档吗?数据键是基于时间戳的,因此它们按时间排序。要获得排序查询,您必须使用orderByKey()
关于数据库参考。更多相关信息https://firebase.google.com/docs/database/android/retrieve-data#sorting_and_filtering_data
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)