我正在为我的数据使用新的分页库。创建 ViewModel 并首次初始化实时数据时,一切正常。问题是当我点击菜单项并想用一组不同的数据更新它时,我无法更新我的实时数据的值。然后我的片段中的 onChanged 方法不会被调用。我已阅读有关 MutableLiveData 以及 setValue 和 postValue 等可以更新实时数据的方法,但在我的情况下,我使用的是 LivePagedListProvider 并且无法从数据库返回 MutableLiveData。
道:
@Query("SELECT * FROM teams ORDER BY name ASC")
LivePagedListProvider<Integer, Team> getAllTeams();
分段:
mTeamViewModel.mTeamsList.observe(this, new Observer<PagedList<Team>>() {
@Override
public void onChanged(@Nullable PagedList<Team> teams) {
mTeamAdapter.setList(teams);
}
});
视图模型:
public LiveData<PagedList<Team>> mTeamsList;
@Inject
DatabaseManager mDatabaseManager;
void setTeamViewModel(final DatabaseManager databaseManager) {
mDatabaseManager = databaseManager;
mTeamsList = mDatabaseManager.getAllTeams().create(
0,
new PagedList.Config.Builder()
.setPageSize(50)
.setPrefetchDistance(50)
.setEnablePlaceholders(true)
.build());
}
boolean onOptionsItemSelected(final MenuItem item) {
switch (item.getItemId()) {
case R.id.action_favorite:
mTeamsList = mDatabaseManager.getFavoriteTeams().create(
0,
new PagedList.Config.Builder()
.setPageSize(50)
.setPrefetchDistance(50)
.build());
return true;
default: return false;
}
}