Most visited

Recently visited

AsyncListUtil

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 ,但它不依赖于它,可以与其他列表视图一起使用。

Summary

Nested classes

class AsyncListUtil.DataCallback<T>

AsyncListUtil提供数据访问的AsyncListUtil

class AsyncListUtil.ViewCallback

链接AsyncListUtil与列表视图的回调。

Public constructors

AsyncListUtil(Class<T> klass, int tileSize, DataCallback<T> dataCallback, AsyncListUtil.ViewCallback viewCallback)

创建一个AsyncListUtil。

Public methods

T getItem(int position)

如果尚未加载,则返回给定位置或 null处的数据项。

int getItemCount()

返回数据集中的项目数量。

void onRangeChanged()

更新当前可见的项目范围。

void refresh()

强制重新加载数据。

Inherited methods

From class java.lang.Object

Public constructors

AsyncListUtil

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.

Public methods

getItem

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.

getItemCount

int getItemCount ()

返回数据集中的项目数量。

这是最近致电 refreshData()返回的号码。

Returns
int Number of items.

onRangeChanged

void onRangeChanged ()

更新当前可见的项目范围。

标识尚未加载的数据项并启动将它们加载到后台。 应该从视图的滚动监听器中调用(如onScrolled(RecyclerView, int, int) )。

refresh

void refresh ()

强制重新加载数据。

放弃所有缓存的数据并重新加载当前可见范围内的所有必需数据项。 在数据项数量和/或内容发生变化时被调用。

Hooray!