【发布时间】:2026-02-16 01:05:01
【问题描述】:
我需要实现一个 recyclerView 来显示我在 Parse 上的查询,所以我已经完成了:
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);
}
}
}
}
而且效果很好。但是几个月前,我使用了无需分页即可工作的领域 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) } }
当我使用惰性方法时它是如何工作的?我需要下载所有项目还是需要分页?
【问题讨论】:
-
你到底想用lazy做什么?
-
@chandil03 等待来自 Parse 的 List
-
这种情况下不使用惰性函数。当你想在你的第一个方法调用上加载资源时使用惰性函数,而不是在初始化变量时。
标签: java android android-recyclerview realm kotlin