在这里,我在recyclerview中设置了Firebase适配器。 在其中使用了Query这样的查询。
Query sortPost=PostRef.orderByChild("count").limitToFirst(firstTenPost);
在这种情况下,firstTenPost是int变量。现在,我想通过检测来动态更改其值。
让我们举个例子, 假设我在recyclerview之外有一个按钮,并且如果我在按钮上设置了onClickListner,那么应该是这样,
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
//here, can i change the value of firstTenPost variable//
firstTenPost=firstTenPost+10;
}
});
那么有可能吗?如果可以,请解释
答案 0 :(得分:0)
Firebase实时数据库不支持偏移查询。因此,虽然您可以说“给我符合这些条件的前10个节点”,但您以后不能说“给我下一个10个节点”。
您必须实现分页的两个主要选择是:
使用不断增长的页面大小。因此,当您显示第一页时,limitToFirst(10)
,然后在第二页中,您使用limitToFirst(20)
,依此类推。
PostRef.orderByChild("count").limitToFirst(20);
这非常简单,但是确实会导致您读取的数据量超过后续页面所需的数据量。只要用户不向下浏览太多页面,通常这不是什么大问题。
Firebase的查询模型基于锚文档。因此,尽管您不能说“跳过10个节点”,但您可以告诉查询要从特定节点开始。
因此,如果您知道第一页的最后一个节点,则可以创建一个查询来检索第1页的最后一个节点,然后检索下一个10个节点。为此,您需要知道count
值(订购的属性)和上一页最后一个节点的键。
假设第1页上的最后一个节点的计数等于100,并使用键-Ldfo731rl
,则可以使用以下命令获取下一页的节点:
PostRef.orderByChild("count").startAt(100, "-Ldfo731rl").limitToFirst(10);
正如Alex所评论的,Firebase实时数据库的分页主题已经在这里讨论了很多,因此我建议您查看其他questions on the topic。