Android 架构组件分页 DataSource.Factory 错误
Android architecture components paging DataSource.Factory error
我正在尝试 DataSource.Factory
class,但在尝试 return 我的 PageKeyedDataSource
实现时出现错误。
class SubredditPageKeyedDataSource(private val service: LedditService,
private val subredditName: String): PageKeyedDataSource<String, Children<DataX>>() {
@SuppressLint("CheckResult")
override fun loadInitial(params: LoadInitialParams<String>, callback: LoadInitialCallback<String, Children<DataX>>) {
service.getSubredditTopics(subredditName).subscribe { result -> callback.onResult(result.data.children, result.data.before, result.data.after) }
}
@SuppressLint("CheckResult")
override fun loadAfter(params: LoadParams<String>, callback: LoadCallback<String, Children<DataX>>) {
service.getSubredditTopicsAfter(subredditName, after = params.key).subscribe {result -> callback.onResult(result.data.children, result.data.after)}
}
override fun loadBefore(params: LoadParams<String>, callback: LoadCallback<String, Children<DataX>>) {
// ignored, since we only ever append to our initial load
}
}
现在这是我的工厂:
class SubredditDataSourceFactory(private val service: LedditService,
private val subredditName: String): DataSource.Factory<String, List<Children<DataX>>>() {
override fun create(): DataSource<String, List<Children<DataX>>> {
return SubredditPageKeyedDataSource(service, subredditName)
}
}
当在上述 create()
方法中 returning 我的 DataSource 时,AndroidStudio 给我一个 IDE 错误:
Type mismatch.
Required: DataSource<String, List<Children<DataX>>>
Found: SubredditPageKeyedDataSource
我要疯了吗? PageKeyedDataSource
从 ContiguousDataSource
扩展而来,后者是 DataSource
。为什么会出现类型不匹配?我已经检查了分页库的 2 个不同示例,它们的实现与我的完全一样。除非我错过了什么???
类型实际上不匹配。
您的工厂用于:
PageKeyedDataSource<String, List<Children<DataX>>>
但是您的数据源实现了以下类型:
PageKeyedDataSource<String, Children<DataX>>
请注意,右侧有一个 children 列表,另一个只有一个 child。
没有 List<> 的部分应该是正确的,请尝试从您的代码中删除该部分。
我正在尝试 DataSource.Factory
class,但在尝试 return 我的 PageKeyedDataSource
实现时出现错误。
class SubredditPageKeyedDataSource(private val service: LedditService,
private val subredditName: String): PageKeyedDataSource<String, Children<DataX>>() {
@SuppressLint("CheckResult")
override fun loadInitial(params: LoadInitialParams<String>, callback: LoadInitialCallback<String, Children<DataX>>) {
service.getSubredditTopics(subredditName).subscribe { result -> callback.onResult(result.data.children, result.data.before, result.data.after) }
}
@SuppressLint("CheckResult")
override fun loadAfter(params: LoadParams<String>, callback: LoadCallback<String, Children<DataX>>) {
service.getSubredditTopicsAfter(subredditName, after = params.key).subscribe {result -> callback.onResult(result.data.children, result.data.after)}
}
override fun loadBefore(params: LoadParams<String>, callback: LoadCallback<String, Children<DataX>>) {
// ignored, since we only ever append to our initial load
}
}
现在这是我的工厂:
class SubredditDataSourceFactory(private val service: LedditService,
private val subredditName: String): DataSource.Factory<String, List<Children<DataX>>>() {
override fun create(): DataSource<String, List<Children<DataX>>> {
return SubredditPageKeyedDataSource(service, subredditName)
}
}
当在上述 create()
方法中 returning 我的 DataSource 时,AndroidStudio 给我一个 IDE 错误:
Type mismatch.
Required: DataSource<String, List<Children<DataX>>>
Found: SubredditPageKeyedDataSource
我要疯了吗? PageKeyedDataSource
从 ContiguousDataSource
扩展而来,后者是 DataSource
。为什么会出现类型不匹配?我已经检查了分页库的 2 个不同示例,它们的实现与我的完全一样。除非我错过了什么???
类型实际上不匹配。
您的工厂用于:
PageKeyedDataSource<String, List<Children<DataX>>>
但是您的数据源实现了以下类型:
PageKeyedDataSource<String, Children<DataX>>
请注意,右侧有一个 children 列表,另一个只有一个 child。 没有 List<> 的部分应该是正确的,请尝试从您的代码中删除该部分。