如何破解数据源以使用静态数据?(将列表<T>转换为数据源<Int,T>)



我有一个接受LiveData<PagedList<T>>的UI组件,但在一种情况下,我需要将其用于直接从RecycleViewer传递的数据(RecycleViewer产生结构为List<Object>的输出(。我可以轻松地将其映射到Map<Int, Object>,但 Map 无法转换为数据源,因此我需要以某种方式将其转换为DataSource<Int, Object>或直接转换为<PagedList<Object>>

我尝试了以下内容,但不幸的是它不起作用 ->错误是您无法将可变映射转换为数据源。有什么想法吗?

class DataSourceFactory(
val data: List<Object>
) : DataSourceFactory<Object>() {
override fun create(): DataSource<Int, Object> {
val mappedData = mutableMapOf<Int, Object>()
var index = 0
for (object in data) {
mappedData[index] = object
index = +1
}
return mappedData as DataSource<Int, Object>
}
}

首先,Kotlin 中没有对象,你应该使用 Any。您会收到错误,因为数据源未实现映射接口。如果不想将映射接口添加到数据源,可以执行以下操作:

override fun create(): DataSource<Int, Any> {
val dataSource = DataSource<Int, Any>()
data.mapIndexed { index, any -> dataSource.put(index, any) }
return dataSource
}

只需调整方法即可将元素添加到数据源 - 我在这个例子中使用了

最新更新