未在 LiveData 接收到数据更改
Not receiving the data change at LiveData
我正在使用一个简单的改造调用,然后更新数据,片段通过视图模型对其进行观察。
不幸的是,由于某种原因,它根本不起作用。就好像 "postValue or setValue" 不工作或干脆消失了。
片段:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mViewModel = ViewModelProviders.of(requireActivity()).get(MyViewModel.class);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
subscribe();
mViewModel.fetchList();
return rootView;
}
private void subscribe() {
mViewModel.getListObservable().observe(this, new Observer<List<MyObj>>() {
@Override
public void onChanged(@Nullable List<MyObj> objList) {
....
}
});
}
我的视图模型:
private LiveData<List<MyObj>> mListObservable = new MutableLiveData<>();
private Repository repository;
public MoviesViewModel(Application application) {
super(application);
repository = new Repository();
}
public void fetchList(){
mListObservable = repository.getList();
}
public LiveData<List<MovieObj>> getListObservable(){
return mListObservable;
}
存储库:
public LiveData<List<MyObj>> getList(){
final MutableLiveData<List<MovieObj>> data = new MutableLiveData<>();
mServiceInterface.getData("en-US").enqueue(new Callback<MyResponseCustom>() {
@Override
public void onResponse(Call<MyResponseCustom> call, Response<MyResponseCustom> response) {
data.postValue(response.body().getResult());
}
@Override
public void onFailure(Call<MyResponseCustom> call, Throwable t) {
}
});
return data;
}
你是 post Repository
MutableLiveData
的值,但正在观察 MyViewModel
LiveData
。合并它们或只使用一个
像这样尝试
我的视图模型:
public LiveData<List<MyObj>> fetchList(){
return repository.getList();
}
片段:
mViewModel.fetchList().observe(this, new Observer<List<MyObj>>(){...}
我正在使用一个简单的改造调用,然后更新数据,片段通过视图模型对其进行观察。 不幸的是,由于某种原因,它根本不起作用。就好像 "postValue or setValue" 不工作或干脆消失了。
片段:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mViewModel = ViewModelProviders.of(requireActivity()).get(MyViewModel.class);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
subscribe();
mViewModel.fetchList();
return rootView;
}
private void subscribe() {
mViewModel.getListObservable().observe(this, new Observer<List<MyObj>>() {
@Override
public void onChanged(@Nullable List<MyObj> objList) {
....
}
});
}
我的视图模型:
private LiveData<List<MyObj>> mListObservable = new MutableLiveData<>();
private Repository repository;
public MoviesViewModel(Application application) {
super(application);
repository = new Repository();
}
public void fetchList(){
mListObservable = repository.getList();
}
public LiveData<List<MovieObj>> getListObservable(){
return mListObservable;
}
存储库:
public LiveData<List<MyObj>> getList(){
final MutableLiveData<List<MovieObj>> data = new MutableLiveData<>();
mServiceInterface.getData("en-US").enqueue(new Callback<MyResponseCustom>() {
@Override
public void onResponse(Call<MyResponseCustom> call, Response<MyResponseCustom> response) {
data.postValue(response.body().getResult());
}
@Override
public void onFailure(Call<MyResponseCustom> call, Throwable t) {
}
});
return data;
}
你是 post Repository
MutableLiveData
的值,但正在观察 MyViewModel
LiveData
。合并它们或只使用一个
像这样尝试
我的视图模型:
public LiveData<List<MyObj>> fetchList(){
return repository.getList();
}
片段:
mViewModel.fetchList().observe(this, new Observer<List<MyObj>>(){...}