在我正在工作的项目中,我正在使用分页库和改造。这是我第一次这样做。
正常返回数据。但是我注意到我的视图模型中的观察者,更确切地说,是在我的PageKeyedDataSource中的LoadIinitial回调之前调用了LiveData。这使传递给适配器的列表为空。 为什么在我的回调之前调用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);
}
});
我对DataSource的呼叫
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();
}
}
}
答案 0 :(得分:0)
对于我最大的愚蠢,我覆盖了getItemCount并返回零。 删除它,一切正常。