XAdapter 是一个对 Android RecyclerView Adapter 的轻量级封装库,基于kotlin特性,可以做到
。
1 常规模式
设置或刷新数据
adapter.setList(list)
adapter.refresh(list)
设置或刷新数据
adapter.setList(list)//设置数据,会替换原来的list对象
adapter.refresh(list)//保留原来的list对象,但是会重置列表元素
添加数据
adapter.add(list)//添加多条数据
adapter.add(item)//添加一条数据
adapter.add(index,list)//指定位置添加多条数据
adapter.add(index,item)//指定位置添加一条数据
删除数据
adapter.removeAt(index)//删除指定位置的数据
adapter.remove(start,count)//从start处开始,删除count条数据
adapter.remove(item)//删除指定数据
adapter.remove(list)//删除多条数据
adapter.remove()//删除所有数据
修改数据
adapter.updateAt(index,item)//将item替换原来index处的数据
adapter.updateAt(index)//修改index处数据内容
adapter.update(item)//修改item内容
adapter.update(list)//修改多条数据
adapter.swap(fromPosition,toPosition)//交换位置
获取列表数据
adapter.getDataList()
2 增量更新数据(Differ)
与ListAdapter用法相似。
- 步骤一:初始化时设置数据匹配规则
adapter.setDiffer(itemCallback)
- 步骤二:数据变更时提交数据
adapter.submitList(list)
3 方法定义
/**
* 设置数据
* 会替换原来的数组对象
* Differ模式下不可用
*/
fun <L : MutableList<D>> setList(list: L)
/**
* 刷新数据
* 会保留原数组对象
* Differ模式下不可用
*/
fun <L : Collection<D>> refresh(list: L)
/**
* 添加数据
* Differ模式下不可用
*/
fun <L : Collection<D>> add(list: L)
/**
* 添加数据
* Differ模式下不可用
*/
fun add(data: D)
/**
* 添加数据
* Differ模式下不可用
*/
fun add(index: Int, data: D)
/**
* 添加数据
* Differ模式下不可用
*/
fun <L : Collection<D>> add(index: Int, list: L)
/**
* 删除数据
* Differ模式下不可用
*/
fun removeAt(index: Int)
/**
* 删除数据
* Differ模式下不可用
*/
fun remove(start: Int, count: Int)
/**
* 删除数据
* Differ模式下不可用
*/
fun remove(data: D)
/**
* 删除数据
* 改方法会刷新整个列表
* Differ模式下不可用
*/
fun <L : Collection<D>> remove(list: L)
/**
* 删除所有数据
* Differ模式下不可用
*/
fun remove()
/**
* 修改数据
*/
fun updateAt(index: Int, data: D, payload: Any? = null)
/**
* 按索引修改数据
*/
fun updateAt(index: Int, payload: Any? = null)
/**
* 修改数据
*/
fun update(data: D, payload: Any? = null)
/**
* 修改数据
*/
fun <L : Collection<D>> update(list: L, payload: Any? = null)
/**
* 交换数据
* Differ模式下不可用
*/
fun swap(fromPosition: Int, toPosition: Int)
/**
* 使用Differ算法迭代数据
*/
fun setDiffer(
diffCallback: DiffUtil.ItemCallback<D> = DefaultItemCallback(),
listener: AsyncListDiffer.ListListener<D> = AsyncListDiffer.ListListener<D> { _, _ -> }
): Employer
/**
* 使用Differ算法迭代数据
*/
fun setDiffer(
config: AsyncDifferConfig<D>,
listener: AsyncListDiffer.ListListener<D> = AsyncListDiffer.ListListener<D> { _, _ -> }
): Employer
/**
* 在Differ模式下更新数据
*/
fun submitList(list: List<D>)
/**
* 在Differ模式下更新数据
*/
fun submitList(list: List<D>, commitCallback: Runnable)