Hey, which is the correct approach (with paging li...
# android-architecture
h
Hey, which is the correct approach (with paging library) when we have multiple data sources to fetch data from. 1️⃣ : Making single DataSource
Copy code
class 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
Copy code
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>) {
        //...
    }
}