setDifferModels

fun RecyclerView.setDifferModels(newModels: List<Any?>?, detectMoves: Boolean = true, commitCallback: Runnable? = null)

对比数据, 根据数据差异自动刷新列表 数据对比默认使用equals函数对比, 你可以为数据手动实现equals函数来修改对比逻辑. 推荐定义数据为 data class, 因其会根据构造参数自动生成equals 如果数据集合很大导致对比速度很慢, 建议在非主步线程中调用此函数, 效果等同于androidx.recyclerview.widget.AsyncListDiffer

对于数据是否匹配可能需要你自定义BindingAdapter.itemDifferCallback, 因为默认使用数据模型的equals方法匹配, 具体请阅读ItemDifferCallback.DEFAULT

Parameters

newModels

新的数据, 将覆盖旧的数据

detectMoves

是否对比Item的移动, true会导致列表当前位置发生移动

commitCallback

因为子线程调用setDifferModels刷新列表会不同步(刷新列表需要切换到主线程), 而commitCallback保证在刷新列表完成以后调用(运行在主线程)