У меня есть RecyclerView
, который заполняется данными с разбивкой на страницы.
Мне нужно обновить sh его через SwipeRefreshLayout
, но пока я не могу этого сделать.
Я перепробовал множество ссылок, похожих на это, но безуспешно. Кроме того, чтобы вы, ребята, знали: когда я делаю refre sh, данные извлекаются правильно, но не отображаются в recyclerView ...
Кроме того, когда я перехожу из этого пункта назначения в другой через Navigation
, а затем, я отвечу, он обновляется. Я не уверен, что мне не хватает или что я делаю неправильно.
ViewModel:
class ActivityViewModel : ViewModel() {
var itemDataSourceFactory = OperationsDataSourceFactory()
private set
val livePagedList: LiveData<PagedList<Result<Operation?>>>
init {
val config = PagedList.Config.Builder()
.setEnablePlaceholders(false)
.setInitialLoadSizeHint(10)
.setPageSize(10)
.build()
livePagedList = LivePagedListBuilder(itemDataSourceFactory, config).build()
}
fun refresh() {
itemDataSourceFactory.dataSourceLiveData.value?.endCursor = null
itemDataSourceFactory.refresh()
}
}
DataSourceFactory:
class OperationsDataSourceFactory :
DataSource.Factory<String, Result<Operation?>>() {
val dataSourceLiveData = MutableLiveData<OperationsDataSource>()
lateinit var dataSource: OperationsDataSource
override fun create(): DataSource<String, Result<Operation?>> {
dataSource = OperationsDataSource()
dataSourceLiveData.postValue(dataSource)
return dataSource
}
fun refresh(){
dataSourceLiveData.value?.invalidate()
}
}
И во фрагменте я есть примерно так:
private fun initView() {
binding.swipeToRefresh.setOnRefreshListener {
itemViewModel.refresh()
}
getData() //observables with adapter.submitList(list)
}