Android 在DataSnapshot中从Firebase检索数据(不按顺序)
我将数据保存到Fire base中,但当我检索它时。数据不在序列中 此处数据按准确顺序保存: 但当我检索到丢失了序列的数据时: 这是我检索数据的代码Android 在DataSnapshot中从Firebase检索数据(不按顺序),android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我将数据保存到Fire base中,但当我检索它时。数据不在序列中 此处数据按准确顺序保存: 但当我检索到丢失了序列的数据时: 这是我检索数据的代码 DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users").child(Autho_User.getUid()).child("Data"); ref.addListenerForSingleValueEvent(
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users").child(Autho_User.getUid()).child("Data");
ref.addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
System.out.println(" Value = "+dataSnapshot.toString());
}
(打印它只是为了检查值)数据不在序列中,即使我通过了它
dataSnapshot.getvalue();
希望你明白我的问题。我需要按顺序存储数据,Firebase存储JSON数据。根据定义,JSON中节点下的子节点是无序的。只有在显示或检索数据时,才会获得订单。因此,您显示的第一个屏幕截图只是Firebase数据库控制台显示它的顺序 如果要在应用程序中按特定顺序获取数据,需要做两件事:
ValueEventListener
时保持项目顺序,请阅读。当您将这两者结合起来时,您会得到:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users").child(Autho_User.getUid()).child("Data");
Query dataOrderedByKey = ref.orderByKey();
dataOrderedByKey.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
System.out.println("Key = "+childSnapshot.getKey()+" Value = "+childSnapshot.toString());
}
}
...
这是一个极为常见的错误/问题,以下是之前的一些问题供参考: