Hitanshu Dhawan
12/31/2019, 11:43 AMclass FooDataSourceFactory(private val fooType: FooType) : DataSource.Factory<Int, Foo>() {
override fun create(): DataSource<Int, Foo> {
return FooDataSource(fooType)
}
}
class FooDataSource(private val fooType: FooType) : PageKeyedDataSource<Int, Foo>() {
override fun loadInitial(params: LoadInitialParams<Int>, callback: LoadInitialCallback<Int, Foo>) {
when(fooType) {
foo1 -> //...
foo2 -> //...
}
}
}
2️⃣ : Making multiple DataSources
class FooDataSourceFactory(private val fooType: FooType) : DataSource.Factory<Int, Foo>() {
override fun create(): DataSource<Int, Foo> {
when(fooType) {
foo1 -> return Foo1DataSource(fooType)
foo2 -> return Foo2DataSource(fooType)
}
}
}
class Foo1DataSource(private val fooType: FooType) : PageKeyedDataSource<Int, Foo>() {
override fun loadInitial(params: LoadInitialParams<Int>, callback: LoadInitialCallback<Int, Foo>) {
//...
}
}
class Foo2DataSource(private val fooType: FooType) : PageKeyedDataSource<Int, Foo>() {
override fun loadInitial(params: LoadInitialParams<Int>, callback: LoadInitialCallback<Int, Foo>) {
//...
}
}