Я пытаюсь обновить свои LiveData в моей модели представления при нажатии на пользовательский интерфейс.Тем не менее, я понятия не имею, как.Я пытаюсь сбросить DataSource.Factory и затем сделать его недействительным, но он все равно просто загружает тот же сетевой вызов с первого раза.
ViewModel:
class RedditViewModel @Inject constructor(val redditService: LedditService,
val sharedPrefsManager: SharedPrefsManager): ViewModel() {
private val subredditName = MutableLiveData<String>()
private var dataSourceFactory = TopicDataSourceFactory(redditService, sharedPrefsManager.lastSubreddit)
private val config = PagedList.Config.Builder()
.setEnablePlaceholders(false)
.setPageSize(30)
.setInitialLoadSizeHint(60)
.build()
var topicList = switchMap(subredditName) {LivePagedListBuilder<String, Children<Topic>>(dataSourceFactory, config).build()}
fun switchSub(sub: String){
if(subredditName.value != sub){
subredditName.value = sub
sharedPrefsManager.lastSubreddit = sub
dataSourceFactory = TopicDataSourceFactory(redditService, sharedPrefsManager.lastSubreddit)
dataSourceFactory.postData.value?.invalidate()
}
}
}
TopicDataSourceFactory:
class TopicDataSourceFactory(private val service: LedditService,
private val subredditName: String): DataSource.Factory<String, Children<Topic>>() {
val postData = MutableLiveData<TopicPageKeyedDataSource>()
override fun create(): DataSource<String, Children<Topic>> {
val dataSource = TopicPageKeyedDataSource(service, subredditName)
postData.postValue(dataSource)
return dataSource
}
}