Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.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
Java 如何在firebase messages节点获取最后发送给我的消息?_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 如何在firebase messages节点获取最后发送给我的消息?

Java 如何在firebase messages节点获取最后发送给我的消息?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,第一个孩子是我的UID代码,很容易获取,第二个孩子是发送者的UID,我无法获取 第三个孩子是一把独特的钥匙 我只想检索每个发件人的最后一封邮件 这是我的密码 String my_Id = currentuser.getUid(); dataQuery = FirebaseDatabase.getInstance().getReference("Messages").child(my_Id); dataQuery.addChildEventListener(new ChildEv

第一个孩子是我的UID代码,很容易获取,第二个孩子是发送者的UID,我无法获取 第三个孩子是一把独特的钥匙 我只想检索每个发件人的最后一封邮件

这是我的密码

 String my_Id = currentuser.getUid();
    dataQuery = FirebaseDatabase.getInstance().getReference("Messages").child(my_Id);
    dataQuery.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot getalldata, String s) {

            Map<String,Object> sender = (Map<String,Object>) getalldata.getValue());

            for (Map.Entry<String, Object> entry : sender.entrySet()){

                Map singleUser = (Map) entry.getValue();
                String sender_UID = entry.getKey(); 
                // I can't get UID of the sender so I can't get last message

            }


        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

        }
        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {


        }
        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.d("szx", "onCancelled", databaseError.toException());
        }
    });
String my_Id=currentuser.getUid();
dataQuery=FirebaseDatabase.getInstance().getReference(“消息”).child(我的Id);
dataQuery.addChildEventListener(新的ChildEventListener(){
@凌驾
公共void onchildaded(DataSnapshot getalldata,字符串s){
Map sender=(Map)getalldata.getValue();
对于(Map.Entry:sender.entrySet()){
Map singleUser=(Map)entry.getValue();
String sender_UID=entry.getKey();
//我无法获取发件人的UID,因此无法获取最后一条消息
}
}
@凌驾
公共void onChildChanged(DataSnapshot DataSnapshot,字符串s){
}
@凌驾
ChildRemoved上的公共void(DataSnapshot DataSnapshot){
}
@凌驾
已移动ChildMoved上的公共void(DataSnapshot DataSnapshot,字符串s){
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
Log.d(“szx”,“onCancelled”,databaseError.toException());
}
});
问题是我无法获取发件人的UID,因此无法获取邮件 是否有任何方法可以在不需要知道发件人UID的情况下获取最后一封邮件? 如果这是不可能的,那么如何获取每个发件人的每个UID并获取最后的消息


在您的数据库中,您有:

Messages
 idthatyoucanget
    senderid
        randomid
要获取无法获取的id,请尝试以下操作:

 String my_Id = currentuser.getUid();
dataQuery = FirebaseDatabase.getInstance().getReference("Messages").child(my_Id);
dataQuery.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot getalldata, String s) {

       String ids=getalldata.getKey();

        }

    }

    @Override
    public void onChildChanged(DataSnapshot dataSnapshot, String s) {

    }
    @Override
    public void onChildRemoved(DataSnapshot dataSnapshot) {


    }
    @Override
    public void onChildMoved(DataSnapshot dataSnapshot, String s) {

    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.d("szx", "onCancelled", databaseError.toException());
    }
    });

由于您使用的是OnChildaded,因此无需迭代即可获取发件人id。

是的,您是对的。。那我怎么才能得到最后的消息呢?你能完成你的答案吗?为此,你需要迭代,
for(datasnaphot数据:getalldata.getChildren()){String messages=datas.child(“message”).getValue().toString()