gpt4 book ai didi

java - 如何使用 kotlin 实现延迟加载 recyclerView 适配器,如 realm recyclerView 适配器

转载 作者:行者123 更新时间:2023-11-29 02:40:05 28 4
gpt4 key购买 nike

我需要实现一个 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);
}
}
}
}

而且效果很好。但是几个月前,我使用了无需分页即可工作的 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) } }

当我使用惰性方法时它是如何工作的?我需要下载所有项目还是我还需要分页?

最佳答案

我使用了无需分页即可工作的 realm recyclerView 适配器(它工作得很好,因为我有 5 万个项目要显示),我想制作这样的适配器。

实际上这是 Realm 的魔法,而不是它的适配器。而且你无法获得相同的品味,因为 Realm 的延迟加载架构将比服务器端分页等其他架构 super 快。对不起,你不能模仿它。

我需要下载所有项目还是我还需要分页?

如果服务器端的数据源不能处理分页请求,你必须先加载所有项目,然后在客户端查询它,让适配器在 recyclerview 上显示项目

当我使用惰性方法时它是如何工作的?

我的理解是,您想结合 kotlin 的惰性和分页?

适配器已经需要一个数据集(可能是来自数据源的 10 到 20 个项目)以在需要时显示。所以我看不到 kotlin 的懒惰有任何合适的用法。

关于java - 如何使用 kotlin 实现延迟加载 recyclerView 适配器,如 realm recyclerView 适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44843160/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com