如何在Firebase查询中增加“ limitToFirst”的限制?

时间:2019-06-12 15:55:55

标签: java android firebase

大家好,我从Recyclerview的Firebase中获取数据。为了更好地理解我的问题,请访问我之前的问题。 How do i add the show more functionality to getting firebase database?

这是我以前的问题。为此,我发现了一些逻辑(可能是错误的)。 如果我设置了查询,

Query sortPost=PostRef.orderByChild("count").limitToFirst(firstTenPost);

并且我将Scrolllistner设置为检测底部的滚动范围

postList.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);firstTwoPost=2;
                Toast.makeText(MainActivity.this, "Last", Toast.LENGTH_LONG).show();

//So here i want to add +10 items with show more in recyclerview
                    }
                }
            });

1 个答案:

答案 0 :(得分:1)

根据您的要求,您无需增加limitOfFirst()的限制。

您必须尝试使用​​startAt()方法。 请参考下面的代码以更好地理解。

首次加载:

代码应为

Query sortPost=PostRef.orderByChild("count").limitToFirst(firstTenPost);

并根据此查询的响应,使用迭代器从子记录中查找最后一个键。

您可以使用以下循环从响应快照中获取最后一个密钥,

for(DataSnapshot childSnap : dataSnapshot.getChindren()){
   lastKey = childSnap.getKey();
}

然后在查询中加载更多使用

String lastKey = "Last Fetched Key From Earlier Response";
Query sortPost=PostRef.orderByChild("count").startAt(lastKey).limitToFirst(firstTenPost);

并根据此查询的响应,将 lastKey 变量更新为last以获取记录键。

注意:在loadmore响应上,您每次都必须跳过第一个值,以避免重复对象。