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) |
|
|---|---|
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 ()
强制重新加载数据。
放弃所有缓存的数据并重新加载当前可见范围内的所有必需数据项。 在数据项数量和/或内容发生变化时被调用。