我需要实现一个在Parse上显示我的查询的recyclerView,所以我已经完成了它:
private class Pagination extends RecyclerView.OnScrollListener{
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
visibleItemCount = manager.getChildCount();
totalItemCount = manager.getItemCount();
firstVisibleItemPosition = manager.findFirstVisibleItemPosition();
if (!isLoading && !isLastPage) {
if ((visibleItemCount + firstVisibleItemPosition) >= totalItemCount
&& firstVisibleItemPosition >= 0
&& totalItemCount >= PAGINATION) {
isLoading = true;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
loadData();
}
}, 2000);
}
}
}
}
它运作良好。但几个月前,我使用了不带分页功能的realm recyclerView适配器(它工作得非常好,因为我要显示50k项目),我想制作这样的适配器。我也使用Kotlin,我已经看到了懒惰变量的概念:
val lazyValue: String by lazy {
println("computed!")
"Hello"
}
但是由于这个原因,我不知道如何使用它来制作适配器:现在,当我进行查询以解析它时,就像这样:
val dishes = ParseQuery.getQuery<ParseObject>("Books").setSkip(index).setLimit(pagination)
dishes.findInBackground { objects, e -> e?.let { listener?.onPaginationError(e.message) } ?:run { createNewDish(objects,listener,false) } }
以及当我使用惰性方法时它是如何工作的?我需要下载所有项目,或者我还需要分页?
答案 0 :(得分:0)
我使用了不带分页的realm recyclerView适配器(并且它工作得非常好,因为我要显示50k项目)并且我想制作这样的适配器。
实际上这是Realm的魔力,而不是它的适配器。而你无法获得相同的品味,因为Realm的延迟加载架构将比其他服务器端分页更快。对不起,你不能模仿它。
我需要下载所有项目,或者我还需要分页?
如果服务器端数据源无法处理分页请求,则必须先加载所有项目,然后在客户端查询并让适配器在recyclerview上显示项目
当我使用惰性方法时它是如何工作的?
我理解的是,你想要结合kotlin的懒惰和分页?
适配器需要一个数据集(可能是数据源中10到20之间的项目),以便在需要时显示。所以我看不出kotlin懒惰的任何适当用法。