跳转至

ListAdapter

  • ListAdapter 需要一个DiffUtil.ItemCallback,用来比对数据集
  • 如果更新数据,需要一个新的List,不可以用原List

示例:

val d: MutableList<String> = mutableListOf()
d.add("0000")
d.add("1111")
d.add("2222")
d.add("3333")
val item1 = delegate1
val myDiffCallback = object : DiffUtil.ItemCallback<String>() {
    //指定diffCallback
    override fun areItemsTheSame(oldItem: String, newItem: String): Boolean {
        return oldItem == newItem
    }

    override fun areContentsTheSame(oldItem: String, newItem: String): Boolean {
        return oldItem == newItem
    }
}

val listAdapterConfig: ListAdapterConfig<String> = createListAdapterConfig<String>(
    // 若没有指定[asyncConfig],则用[diffCallback]参数创建NekoListAdapter
    // 若指定了[asyncConfig],则[diffCallback]参数不起作用
    //diffCallback和asyncConfig是listAdapter的构造函数参数,不明白去看下ListAdapter
    diffCallback = myDiffCallback,
    asyncConfig = AsyncDifferConfig.Builder<String>(myDiffCallback).build()
) {
    addItemView(R.layout.item_1){
        onBind { holder, data, position ->
            holder.getView<TextView>(R.id.tv1)?.text = data.toString()
        }
    }
}
//完成配置
listAdapterConfig.done(rv)
//开启拖拽排序和策划删除
listAdapterConfig.drag(rv, true)
//刷新数据
listAdapterConfig.submitList(d)