java - firebase startAt() endAt() 方法

标签 java android firebase firebase-realtime-database

我想使用 startAt()endAt() 方法,但我不完全理解它们是如何工作的。

假设我有当前的数据库

"users" : {
    "someUser1" : {
      "email" : "oneEmail",
      "someOtherInfo" : "OneInfo",
      "username" : "someUser1"
    }
    "someUser2" : {
      "email" : "twoEmail",
      "someOtherInfo" : "twoInfo",
      "username" : "someUser2"
    },
    "someUser3" : {
      "email" : "threeEmail",
      "someOtherInfo" : "threeInfo",
      "username" : "someUser3"
    },
    "someUser4" : {
      "email" : "fourEmail",
      "someOtherInfo" : "fourInfo",
      "username" : "someUser4"
    }
  }

现在这些数据将被附加到 RecyclerView 上。因此,最初我只想获取前 2 个元素(someUser1someUser2),然后当用户滚动到 recyclerView 的底部时,它会获取其他 2 个元素。

recyclerView 已完全设置并正常工作,我现在只需要从数据库获取元素,但我不明白这两种方法是如何工作的,如果我这样做了:

users = myDB.getReference("users").orderByChild("email").startAt(0).endAt(2);

这足以获取前 2 个元素吗?

谢谢

最佳答案

您可以通过limitToLast()来完成,代码如下:

DatabaseReference node;

node.limitToLast(AppConstants.SIZE)
                    .orderByChild(YourOwnSortMethod)
                    .addValueEventListener(mValueEventListener);

private ValueEventListener mTypingValueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            Log.i(TAG, "onDataChange: " + snapshot.getValue());
            // Your code
        }

        @Override
        public void onCancelled(DatabaseError error) {
            Log.w(TAG, "onCancelled: " + error.getMessage());
        }
    };

它的作用是,

数据集 = A、C、B、E、F

orderByChild(升序)= A、B、C、E、F

限制到最后 (2) = E, F

关于java - firebase startAt() endAt() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41688760/

相关文章:

java - 如何在Android中等待Picasso完成加载图像?

android - 使用 SoundManager 播放多种声音

firebase - Auth 如何与 Firebase 预览 channel 配合使用?

ios - 当用户拒绝访问以允许通知时如何获取 FCM token

具有当前日期的 Android DatePicker

java - 通过可点击的 ListView 将 firebase 数据从一个 Activity 传递到另一个 Activity

java - StandardOpenOption.SPARSE 有什么用?

java - 在 Java 中,不可序列化的套接字是否必须阻止使用客户端-服务器观察者模式?

java - Mule ESB,JDBC 转换器内的 "IN"运算符

java - 如何在java中对具有多个字段的类数组进行排序