Android的 - 如何从Firebase的插入顺序检索对象的列表? [英] Android - How to retrieve list of objects in their insertion order from Firebase?
问题描述
b
$ b
我如何将对象添加到Firebase数据库中列出?
mRefUser.push()。 setValue(new MessageItem());
mRefUser.push()。setValue(new MessageItem());
<
mRefUser.push()。setValue(new MessageItem());
p> 如何添加?
$ b Firebase将每个对象存储为HashMap中的键值对。
我如何取回这些值?
mFireBaseRefnew.addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(D ataSnapshot dataSnapshot){
最终映射< String,MessageItem> messageMap = new LinkedHashMap< String,MessageItem>(); (DataSnapshot postSnapshot:dataSnapshot.getChildren()){
HashMap<
if(dataSnapshot!= null& amp; dataSnapshot.getValue()!= null){
串,MessageItem> messageMap =(HashMap< String,MessageItem>)postSnapshot.getValue();
集合< MessageItem> messageItems = messageMap.values();
List< MessageItem> messageItemList = new ArrayList< MessageItem>();
messageItemList.addAll(messageItems);
$ b @Override
public void onCancelled(FirebaseError firebaseError){
});
我得到了什么?
$ b 最后注意:
散列表键值是随机的。有没有办法获得链接哈希映射而不是哈希映射。我不想存储密钥,因为数据库维护顺序,应该有一些方法让他们在相同的顺序,但我不知道如何让他们。
你读过文档吗?数据键是基于时间戳的,所以他们按时间排序。要获得排序的查询,您必须在数据库引用上使用 orderByKey()
。详细了解 https://firebase.google.com/docs/database/ android / retrieve-data#sorting_and_filtering_data
What i want ?
I want to retrieve the list of objects in their insertion order from Firebase Database.
How i am adding the object to list in Firebase database ?
mRefUser.push().setValue(new MessageItem());
mRefUser.push().setValue(new MessageItem());
.
.
mRefUser.push().setValue(new MessageItem());
How its getting added ?
Firebase stores each object as key value pair in HashMap.
How i am retrieving these value ?
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) {
}
});
What i am getting ?
Last Note :-
The hashmap keys are in random order. Is there any way to get linked hash map instead of hashmap. i dont want to store the keys since database is maintaining the order , there should be some way to get them in the same order but i dont know how to get them.
Have you read documentation? Data keys is timestamp based, so they ordered by time. To get sorted query you must use orderByKey()
on database reference. More about it https://firebase.google.com/docs/database/android/retrieve-data#sorting_and_filtering_data
这篇关于Android的 - 如何从Firebase的插入顺序检索对象的列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!