Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在基于Android Firebase聊天的应用程序上orderByChild?_Android_List_Firebase_Firebase Realtime Database_Chat - Fatal编程技术网

如何在基于Android Firebase聊天的应用程序上orderByChild?

如何在基于Android Firebase聊天的应用程序上orderByChild?,android,list,firebase,firebase-realtime-database,chat,Android,List,Firebase,Firebase Realtime Database,Chat,我正在尝试构建一个用户对用户的聊天应用程序,但无法按发送的最后一条消息排序聊天列表 我的Firebase(实时)结构如下: 我试图像这样检索数据,但我无法在内部消息中按“时间戳”排序 final String uID = firebaseAuth.getCurrentUser().getUid(); Query ref = FirebaseDatabase.getInstance().getReference("Messages"); ref.orderByChild("timestamp")

我正在尝试构建一个用户对用户的聊天应用程序,但无法按发送的最后一条消息排序聊天列表

我的Firebase(实时)结构如下:

我试图像这样检索数据,但我无法在内部消息中按“时间戳”排序

final String uID = firebaseAuth.getCurrentUser().getUid();
Query ref = FirebaseDatabase.getInstance().getReference("Messages");
ref.orderByChild("timestamp").startAt(uID).addValueEventListener(new ValueEventListener() {
   @Override
   public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

有人知道我如何根据最后一条消息的时间戳对用户列表进行排序吗?

您需要将查询更改为以下内容:

final String uID = firebaseAuth.getCurrentUser().getUid();
Query ref = FirebaseDatabase.getInstance().getReference("Messages");
ref.child(uID_uID).orderByChild("timestamp").addValueEventListener(new ValueEventListener() {

您需要访问节点
Messages
下的直接节点,该节点带有下划线。然后,您可以添加
orderByChild(“timestamp”).equalTo(“157644739279”)

,但我无法访问此子项(uID\u uID),因为在我的数据库中,第一个ID是发送消息的用户,第二个ID是接收消息的用户,因此我在该查询中始终得到空值。