observers - 在 LoadInitial 回调之前调用 LiveData 上的观察者
问题描述
在我正在工作的项目中,我正在使用分页库和改造。这是我第一次这样做。
数据正常返回。但我注意到我的视图模型中的观察者,更准确地说是在我的 PageKeyedDataSource 中的 LoadIinitial 回调之前调用我的 LiveData。这使得传递给适配器的列表为空。为什么在我的回调之前调用观察者?
视图模型:
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();
}
}
}
解决方案
对于我最大的愚蠢,我被覆盖 getItemCount 并返回零。删除它,一切正常。
推荐阅读
- c# - Superpower:仅当字符串开始一行时才将字符串与标记器匹配
- c# - 指定的强制转换无效 - bigint 到 long - C#
- c# - 如何检测哪个对象正在运行脚本
- android - 如何在同一活动中显示网站?
- android - InputTextLayout 需要点击 2 次才能响应 onclick
- android - 为什么 UI 不能正常显示?
- php - Vuejs2 - 如何使用 $(this).val()
- uwp - Windows ML - ONNX - HRESULT 异常:0x88900105
- java - Java JNA - 检测注册表值何时更改
- python - 没有scapy模块的python dns嗅探器