相关疑难解决方法(0)

将 RecyclerView 与 DiffUtil 结合使用以处理多种数据类型

如果适配器接收单个数据类型对象,我知道如何实现 DiffUtil。

但就我而言,我有一个适配器,它从片段中获取两种数据类型。

那么如何将 DiffUtil 与多种数据类型一起使用呢?

这是我的适配器代码:

class VisitorsAdapter(val listener: VisitorsViewHolder.OnVisitorClicked) :
RecyclerView.Adapter<BaseViewHolder<*>>() {


private var visitorsData = mutableListOf<Any>()
private var isOwner = true

fun setData(visitorsData: List<Any>) {
    Log.e("TAG", "setData called")
    this.visitorsData.clear()
    var currentVisitors = mutableListOf<CurrentVisitorResponseItem>()
    var leavedVisitors = mutableListOf<LeavedVisitorsResponseItem>()
    for (visitor in visitorsData) {
        when (visitor) {
            is CurrentVisitorResponseItem -> currentVisitors.add(visitor)
            is LeavedVisitorsResponseItem -> leavedVisitors.add(visitor)
        }
    }
    currentVisitors = currentVisitors.sortedBy { it.roomNumber?.toInt() }.toMutableList()
    leavedVisitors = leavedVisitors.sortedBy { it.room }.toMutableList()
    this.visitorsData.addAll(currentVisitors)
    this.visitorsData.addAll(leavedVisitors)
    notifyDataSetChanged()
}

fun isOwner(chooser: Boolean) {
    this.isOwner = …
Run Code Online (Sandbox Code Playgroud)

android android-studio android-recyclerview android-diffutils

1
推荐指数
1
解决办法
3159
查看次数