В проекте, который я работаю, я использую библиотеку страниц и модернизацию. Я делаю это впервые.
Данные возвращаются нормально. Но я заметил, что наблюдатель в моей модели представления, точнее в моих LiveData, вызывается перед обратным вызовом LoadIinitial в моем PageKeyedDataSource. Это делает список переданным адаптеру пустым.
Почему Observer вызывается перед моим обратным вызовом?
ViewModel:
public GameDataViewModel(){
GameResponseDataSourceFactory gameResponseViewModelFactory = new GameResponseDataSourceFactory();
gameListLiveData = gameResponseViewModelFactory.getGameResponseMutableLiveData();
PagedList.Config config = (new PagedList.Config.Builder())
.setEnablePlaceholders(false)
.setPageSize(20)
.build();
gameList = new LivePagedListBuilder(gameResponseViewModelFactory, config).build();
}
Это когда я звоню в моей деятельности:
final GameListAdapter gameListAdapter = new GameListAdapter();
GameDataViewModel gameDataViewModel = ViewModelProvider.AndroidViewModelFactory.
getInstance(this.getApplication()).create(GameDataViewModel.class);
gameDataViewModel.gameList.observe(this, new Observer<PagedList<GameResponse>>() {
@Override
public void onChanged(@Nullable PagedList<GameResponse> gameResponses) {
gameListAdapter.submitList(gameResponses);
}
});
Мой звонок на источник данных:
Call<GameListResponse> call = HttpConnectionHandler.getInstance().getTwitchGameApi().getTopGames(CLIENT_ID, 20, null, null);
call.enqueue(new Callback<GameListResponse>() {
@Override
public void onResponse(Call<GameListResponse> call, Response<GameListResponse> response) {
//initialLoading.postValue(DataState.SUCCESS);
//networkState.postValue(DataState.SUCCESS);
if(response.code() == 200) {
GameListResponse gameListResponse = response.body();
callback.onResult(gameListResponse.getGamesList(), 0, gameListResponse.getGamesList().size(), null, gameListResponse.getCursor());
}
else{
try {
Log.e("ERROR", response.errorBody().string());
} catch (IOException e) {
e.printStackTrace();
}
}
}