java - 如何从 Firebase 查询数据以先获取最大值,最后获取最小值?
问题描述
我尝试获取按时间戳排序的 Recyclerview 的值。我的 Firebase 数据库结构如下所示:
"connections" : {
"matches" : {
"ZYpiuLBRJkcM1cK6tDctKYva7UB3" : {
"ChatId" : "-LG6GS394d_1NotmhnrD",
"lastMsg" : "i wasdsffas asydfhjdadsfoing just fu?an before i met you ok dir?",
"lastMsgBy" : "6dB5rWfSIwez3gO0N0ClBwFJKu53",
"state" : "active",
"ts" : 4
},
"vhsIe0nBBWQ0D9csBpLwgL4Mf293" : {
"ChatId" : "-LG9_RZNm0DgxlhaMaCv",
"lastMsg" : "jj?hjkjäooasASDfsdafasdf? a!?",
"lastMsgBy" : "6dB5rWfSIwez3gO0N0ClBwFJKu53",
"state" : "active",
"ts" : 5
}
为了由孩子 ts 订购,我创建了以下内容:
private void getMyMatchesQuery(final String userId, final String profileImageUrl, final String name){
final String userid = FirebaseAuth.getInstance().getCurrentUser().getUid();
final DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users").child(userid).child("connections").child("matches").child(userId);
Query qi = ref.orderByChild("ts");
qi.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
System.out.println("123value"+dataSnapshot.child("lastMsg").getValue().toString() + dataSnapshot.child("ts").getValue().toString());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
不幸的是,我总是收到数据库的第一个值,似乎该方法不关心 ts 值。也许有人知道如何解决它?
解决方案
推荐阅读
- php - AWS 中的 Symfony RabbitMQ Bundle(托管服务):有什么方法可以让它工作吗?
- python - 在二叉搜索树中查找地板和天花板
- javascript - 如何同步绘图?
- batch-file - 如何使用 robocopy 从变量创建新文件夹?
- python - 如何使用准备好的语句将可变数量的值插入到 SQLite 中的表中
- excel - 查找日期格式的文本并将其替换为当前日期
- c++ - 在 VS C++ 调试器中调查变量
- firebase - 使用令牌信息创建地图时出错
- android - Dagger Hilt Android 给出错误:类 DefaultViewModelFactories 中的方法 getActivityFactory 不能应用于给定类型
- c - 在 XV6 中双重获得自旋锁