如何实现一个延迟加载recyclerView适配器,像使用kotlin的realm recyclerView适配器
我需要实现一个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) } }
以及如何使用懒惰的方法工作? 我需要下载所有的项目,或者我也需要分页?
感谢您的帮助。
我已经使用realm recyclerView适配器,没有分页工作(它工作得很好,因为我有50k项目显示),我想要做一个这样的适配器。
其实这是Realm的魔法,不是适配器。 而你不能得到相同的口味,因为Realm的懒惰加载架构将比其他服务器端分页超快。 对不起,你不能模仿它。
我需要下载所有的项目,或者我也需要分页?
如果服务器端数据源无法处理分页请求,则必须先加载所有项目,然后在客户端查询它,并让适配器在recyclerview上显示项目
当我使用一个懒惰的方法时它是如何工作的?
我明白的是,你想结合kotlin的懒惰和分页?
已经有一个适配器需要一个数据集(可能是来自数据源的10到20个项目),以便在需要时显示。 所以我看不到任何适当的使用kotlin的懒惰。