如何破解数据源以使用静态数据? (将List 转换为DataSource ]

问题描述 投票:0回答:1

我有一个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>
    }
}
java android kotlin android-livedata
1个回答
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的方法-我在此示例中使用了放置
© www.soinside.com 2019 - 2024. All rights reserved.