我有一个UI组件,它接受LiveData<PagedList<T>>
,但在一种情况下,我需要将其用于直接从RecycleViewer传递的数据(RecycleViewer产生的结构为List<Object>
)。我可以轻松地将其映射到Map<Int, Object>
,但是Map无法转换为DataSource,因此我需要以某种方式将其转换为DataSource<Int, Object>
或直接转换为<PagedList<Object>>
我尝试了以下操作,但不幸的是它不起作用->错误是您无法将MutableMap转换为DataSource。有什么想法吗?
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>
}
}
答案 0 :(得分:0)
首先,在Kotlin中没有Object,您应该使用Any。因为DataSource没有实现Map接口,所以会出现错误。如果您不想将Map接口添加到DataSource,则可以执行以下操作:
override fun create(): DataSource<Int, Any> {
val dataSource = DataSource<Int, Any>()
data.mapIndexed { index, any -> dataSource.put(index, any) }
return dataSource
}
只需采用适应方法即可向DataSource添加元素-我在此示例中使用了