java - 从 Firebase 获取最后(5 或 10)个值

标签 java android firebase firebase-realtime-database

我是 Android 的新手,我想从 获取最后的 510 messages FirebaseDatabase。我试过使用它。


ChatInteractor.databaseReference.orderByKey().startAt(10).endAt(20).addListenerForSingleValueEvent((ValueEventListener) ActivityChatView.this);

  • 但结果是 NullPointerException
  • Logcat

java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.database.Query com.google.firebase.database.DatabaseReference.orderByKey()' on a null object reference

  • 我的DatabaseStructure是这样的

enter image description here


  • 更新之后

   DatabaseReference databaseReference= FirebaseDatabase.getInstance().getReferenceFromUrl("https://afdbjkaffirebaseio.com/");
        Query query=databaseReference.child(Constants.ARG_CHAT_ROOMS).orderByChild("tKyhXXAf6TQnQgKyAf23RJcwhsn1_S5ClzMeWUEXR9evLJO9CBd9ABCH3").limitToLast(2);
        query.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                for(DataSnapshot snapshot:dataSnapshot.getChildren()){
                    Chat chat=snapshot.getValue(Chat.class);
                    Log.e("163","ACV"+chat.fromEmail);
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

  • Log的结果

 E/163: ACVnull

最佳答案

如下所示更新您的代码:

 DatabaseReference databaseReference= FirebaseDatabase.getInstance().getReference();
    Query query=databaseReference.child(Constants.ARG_CHAT_ROOMS).child("tKyhXXAf6TQnQgKyAf23RJcwhsn1_S5ClzMeWUEXR9evLJO9CBd9ABCH3").orderByChild().limitToLast("Number of last messages you want to show");
    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            for(DataSnapshot snapshot:dataSnapshot.getChildren()){
                Chat chat=snapshot.getValue(Chat.class);
                Log.e("163","ACV"+chat.fromEmail);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

关于java - 从 Firebase 获取最后(5 或 10)个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46440115/

相关文章:

javascript - Firebase orderByChild 问题

javascript - 从 Firebase 数据库加载数据并使用 JavaScript 放置在 map 的标记上

Java 泛型 : <B extends BaseB> does not match <? 扩展 BaseB>

java - 使用 Class.forName 实例化嵌套的静态类

java - 安卓相机,焦点 slider

android - 如何使用ReentrantLock或Mutex正确锁定线程?

javascript - 您可以直接使用 .then 调用异步函数/方法吗?

Java JNDI 名称 java :/

java - Android 图形 API

java - 来自文件提供程序 Uri 的 Android 7.0 通知声音未播放