android - Firebase 获取最后一个 ID - limitToLast 不工作 - android

标签 android firebase

我正在尝试获取我的消息节点的最后一个 ID,但它没有获取最后一个。比如我最后一个id是12,但是它总是返回item 10的id。我的代码是这样的:

final Query query = firebase.orderByChild("messageId").limitToLast(1);
query.addListenerForSingleValueEvent(new ValueEventListener() {

   public void onDataChange(DataSnapshot dataSnapshot) { 

      Log.i("MessagesFrag","snapshot: "+dataSnapshot.getValue()+""); 

   }

   public void onCancelled(FirebaseError firebaseError) {}

});

它返回这样的东西:

{10={chatId=6, time=Wed Apr 13 22:20:43 EDT 2016, message=hi, user=123, messageId=10}}

它应该返回:

{12={chatId=6, time=Wed Apr 13 22:29:02 EDT 2016, message=I am fine, user=1234, messageId=12}}

我的数据是这样的:

messages
  9:
    chatId: "6"
    message: "hi"
    messageId: "9"
    time: "Wed Apr 13 22:29:02 EDT 2016"
    user: "123"
  10:
    chatId: "6"
    message: "hello"
    messageId: "10"
    time: "Wed Apr 13 22:29:02 EDT 2016"
    user: "1234"
  11:
    chatId: "6"
    message: "how are you?"
    messageId: "11"
    time: "Wed Apr 13 22:29:02 EDT 2016"
    user: "123"
  12:
    chatId: "6"
    message: "I am fine"
    messageId: "12"
    time: "Wed Apr 13 22:29:02 EDT 2016"
    user: "1234"

除此之外,当我将“LimitToLast”更改为“LimitToFirst”(应该得到第一个)时,它没有得到我拥有的第一个元素(节点 1),它也得到了节点 10。

有谁知道可能是什么问题?

最佳答案

我认为问题出在 orderByChild ,因为消息是以数字方式排序的,不需要再次排序。试试这个:

 FirebaseDatabase database = FirebaseDatabase.getInstance();
        // change this to your databae ref
        final DatabaseReference messages = database
                .getReference("XXXX")
                .child("XXXX"); // change this to your databae ref

        messages .limitToLast(1).addListenerForSingleValueEvent(new ValueEventListener() {

            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                if (dataSnapshot.exists()) {
                    // access last message
                    DataSnapshot messageSnapShot= dataSnapshot.getChildren().iterator().next();
                }
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

关于android - Firebase 获取最后一个 ID - limitToLast 不工作 - android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36612989/

相关文章:

android - ClassCastException : android. 支持.v7.widget.ShareActionProvider

Android 任务历史堆栈 : can have "duplicate activities"?

java - Android - 防止 WebView 在旋转时重新加载

android - 如何修复 "Expected NDK STL shared object file"?

Firebase 数据上的 Android Searchview

android - Firebase 测试实验室从未启动

java - 从 Firebase 在 Android 中获取数据时出错

java - 将数据从一个类传递到另一个类

android - 如何将 Firebase Auth token 传递给 webView 并在 Android 上注册通知

android - firebase-core :12. 0.1 未找到