orderByChild()
を使用してFirebaseクエリでデータを実際に注文するという奇妙な問題が発生しています。以下は、私が注文しようとしているデータのスナップショットは、次のとおりです。FirebaseのAndroidでデータを注文する
(合計は、この例のためにオフになっています)
Query query = locationComment.orderByKey();
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getValue() == null) {
return;
}
data.clear();
adapter.notifyDataSetChanged();
String userId;
String time;
String comment;
Map<String, String> commentMap = (Map) dataSnapshot.getValue();
for (Map.Entry<String, String> entry : commentMap.entrySet()) {
if(!((entry.getKey()).contains("total"))) {
String[] keyString = (entry.getKey()).split(",");
time = keyString[0];
userId = keyString[1];
comment = entry.getValue();
Date resultdate = new Date(Integer.parseInt(time));
data.add(new Comment(comment,
DateFormat.getDateTimeInstance().format(resultdate), userId));
adapter.notifyItemInserted(data.size());
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
期待どおり(キーで順序付けられている)順番に並んでいないことを除いて、各キーと値のペア(合計を除く)が得られます。 Firebaseの文書では、32ビット整数に解析できない場合、キーは辞書順に並べられています。
どちらの方法でも、注文は画像に示されているはずですが、地図をループしている間に戻ってくるデータはこの順番ではありません。
誰かが私を正しい方向に向けることができれば、本当に感謝しています。ありがとう!
は、データは、あなたが戻って取得することをどんな感じに見えるのでしょうか?これを防ぐために、あなたは
DataSnapshot.getChildren()
メソッドを使用する必要がありますかこれを含めるために元の投稿を更新してください。ありがとう –