Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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 调用onChildChanged()方法时,将firebase子节点移到顶部_Java_Android_Firebase_Firebase Realtime Database_Nodes - Fatal编程技术网

Java 调用onChildChanged()方法时,将firebase子节点移到顶部

Java 调用onChildChanged()方法时,将firebase子节点移到顶部,java,android,firebase,firebase-realtime-database,nodes,Java,Android,Firebase,Firebase Realtime Database,Nodes,这是我的firebase数据库结构。。。 当标记为绿色的节点下的数据发生更改时,我希望将标记为红色的节点移动到消息下的顶部。如何做到这一点 这是我的密码 ref.addChildEventListener(new ChildEventListener() { //ref is reference to messages node public void onChildAdded(DataSnapshot dataSnapshot, String previousKey)

这是我的firebase数据库结构。。。

当标记为绿色的节点下的数据发生更改时,我希望将标记为红色的节点移动到消息下的顶部。如何做到这一点

这是我的密码

 ref.addChildEventListener(new ChildEventListener() { //ref is reference to messages node
        public void onChildAdded(DataSnapshot dataSnapshot, String previousKey) 
        {

        }
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {
        //Here i need to implement this function
        }
        public void onChildRemoved(DataSnapshot dataSnapshot) {
        }
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {
        }
        public void onCancelled(FirebaseError firebaseError) { }
    });

firebase控制台中的键始终按字母顺序排列,您无法更改


但您可以做的是创建一个用于存储数据的键,在该键下可以正确排序。例如,时间戳键。

您可以共享任何引用或示例吗?这可以使用pushid实现吗?这取决于您的项目,但如果您的键是时间戳,则需要将数据保存在此项下。否则,您可以完全创建一个新节点,并将其称为“NewestMessage”,然后在保存新数据时覆盖此处的数据。如果任何用户在photoUrl中进行了编辑,则其用户节点应位于顶部。或者,如果我们按时间戳进行设置,那么节点将按从最新到旧时间的降序排列。我认为跟踪这一点的最佳方法是创建一个新节点来存储最新消息,然后每当用户编辑其photourl时,该节点将用其id和时间戳进行更新,然后每次进行新编辑时都会被覆盖