我正在制作一个示例android应用程序,它借助RecyclerView显示了Firebase数据库中存在的所有数据。它按我的预期工作。问题是是否随着时间的流逝在数据库中添加更多项目。它仍然会获取所有数据并显示在recyclerView中。肯定会很慢(由于互联网和设备性能下降),并且需要一些时间才能在recyclerView上显示数据。
我听说过一种解决方法,可以将它们做成小块,并在用户进一步滚动时加载另一个。此过程称为分页。 但是,如果使用Firebase数据库,则没有直接的方法可以在recyclerView中对数据进行分页。我也在互联网上搜索了此问题,但没有一个起作用。
有人知道如何在recyclerView中对Firebase数据库数据进行分页吗?
答案 0 :(得分:1)
为此,您需要定义两种类型的列表。一个用于主要列表,其中包含所有元素,第二个具有极限数据。
private Query getQuery(String query) {
Query query;
if (recentLastItem == null) // recent last item is the any type of object which you have stored in the firebase
query = FirebaseDatabase.getInstance().getReference()
.child(your saved data location)
.orderByKey()
.limitToLast(no of elements per time you want);
// this if call when you try first time to get the items from firebase
else
query = FirebaseDatabase.getInstance().getReference()
.child(your save data location)
.orderByKey()
.startAt(recentLastItem)
.limitToFirst(no of items);
// this else part run when you try to get next no of items
return query;
}
获取此查询对象,并在其上调用值Listner。每当用户到达设备的最终屏幕时,还需要调用getQuery()
方法。
调用recyclerView.setAdapter(adapter)
设置recentLastItem = yourListName.get(yourListName.size() -1)
后,不要忘记更新列表中最后一个元素的值