Обновление источника данных новым сетевым вызовом - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь обновить свои 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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...