Код: Выделить всё
val audiofileList : LiveData =
dataSourceFactory.toLiveData(pageSize = 50)
Моя фабрика источников данных выглядит следующим образом:
Код: Выделить всё
class AudiofileDataSourceFactory : DataSource.Factory(){
private var searchQuery = ""
var mutableLiveData = MutableLiveData()
override fun create(): DataSource {
val audiofileDataSource = AudiofileDataSource(searchQuery)
mutableLiveData.postValue(audiofileDataSource)
return audiofileDataSource
}
fun setSearchQuery(query : String){
searchQuery = query
}
}
Код: Выделить всё
class AudiofileDataSource(text : String) : PageKeyedDataSource() {
var searchString = text
override fun loadInitial(params: LoadInitialParams, callback: LoadInitialCallback) {
retrofitProvider.instance.getAudiofiles(searchString).enqueue(object : Callback {
override fun onFailure(call: Call, t: Throwable) {
print(t.message)
}
override fun onResponse(call: Call, response: Response) {
val audiofileList = response.body()!!
callback.onResult(audiofileList, null, 2)
}
})
}
override fun loadAfter(params: LoadParams, callback: LoadCallback) {
retrofitProvider.instance.getAudiofiles(searchString).enqueue(object : Callback {
override fun onFailure(call: Call, t: Throwable) {
}
override fun onResponse(call: Call, response: Response) {
val audiofileList = response.body()!!
callback.onResult(audiofileList, params.key + 1)
}
})
}
override fun loadBefore(params: LoadParams, callback: LoadCallback) {
}
}
Подробнее здесь: https://stackoverflow.com/questions/567 ... factory-of
Мобильная версия