public class AsyncListUtil
extends Object
java.lang.Object | |
↳ | android.support.v7.util.AsyncListUtil<T> |
支持异步内容加载的实用程序类。
它可以用来加载Cursor数据块,而不用查询UI线程上的游标,同时保持UI和缓存同步,以获得更好的用户体验。
它将数据加载到后台线程,并且始终只将有限数量的固定大小的块保存在内存中。
AsyncListUtil
通过查询当前可见范围AsyncListUtil.ViewCallback
,通过加载在背景所需要的数据项AsyncListUtil.DataCallback
,并通知AsyncListUtil.ViewCallback
被加载的数据时。 它可能会加载一些额外的项目以平滑滚动。
请注意,此类使用单个线程来加载数据,因此它适合从辅助存储(如磁盘)加载数据,但不适合从网络加载数据。
本课程旨在与 RecyclerView
一起 RecyclerView
,但它不依赖于它,可以与其他列表视图一起使用。
Nested classes |
|
---|---|
class |
AsyncListUtil.DataCallback<T> 为 |
class |
AsyncListUtil.ViewCallback 链接 |
Public constructors |
|
---|---|
AsyncListUtil(Class<T> klass, int tileSize, DataCallback<T> dataCallback, AsyncListUtil.ViewCallback viewCallback) 创建一个AsyncListUtil。 |
Public methods |
|
---|---|
T |
getItem(int position) 如果尚未加载,则返回给定位置或 |
int |
getItemCount() 返回数据集中的项目数量。 |
void |
onRangeChanged() 更新当前可见的项目范围。 |
void |
refresh() 强制重新加载数据。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
AsyncListUtil (Class<T> klass, int tileSize, DataCallback<T> dataCallback, AsyncListUtil.ViewCallback viewCallback)
创建一个AsyncListUtil。
Parameters | |
---|---|
klass |
Class : Class of the data item. |
tileSize |
int : Number of item per chunk loaded at once. |
dataCallback |
DataCallback : Data access callback. |
viewCallback |
AsyncListUtil.ViewCallback : Callback for querying visible item range and update notifications. |
T getItem (int position)
如果尚未加载,则返回给定位置的数据项或 null
。
如果此方法已被调用某个特定位置并返回null
,则在最终加载时会调用onItemLoaded(int)
。 请注意,如果此位置处于缓存项目范围之外(由方法extendRangeInto(int[], int[], int)
定义),则此位置将永远不会调用回调。
Parameters | |
---|---|
position |
int : Item position. |
Returns | |
---|---|
T |
The data item at the given position or null if it has not been loaded yet. |
int getItemCount ()
返回数据集中的项目数量。
这是最近致电 refreshData()
返回的号码。
Returns | |
---|---|
int |
Number of items. |
void onRangeChanged ()
更新当前可见的项目范围。
标识尚未加载的数据项并启动将它们加载到后台。 应该从视图的滚动监听器中调用(如onScrolled(RecyclerView, int, int)
)。
void refresh ()
强制重新加载数据。
放弃所有缓存的数据并重新加载当前可见范围内的所有必需数据项。 在数据项数量和/或内容发生变化时被调用。