gpt4 book ai didi

java - 如何破解DataSource以使用静态数据? (将 List 转换为 DataSource)

转载 作者:行者123 更新时间:2023-12-01 19:16:34 25 4
gpt4 key购买 nike

我有一个 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>
}
}

最佳答案

首先,Kotlin 中没有 Object,你应该使用 Any。您会收到错误,因为 DataSource 未实现 Map 接口(interface)。如果你不想在DataSource中添加Map接口(interface),你可以这样做:

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

只需调整方法将元素添加到数据源 - 我在本示例中使用了 put

关于java - 如何破解DataSource以使用静态数据? (将 List<T> 转换为 DataSource<Int, T>),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59409578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com