mvvm观察者
2021-01-14 本文已影响0人
我叫杨毅
1.在ModelView定义观察者
public MutableLiveData<Boolean> isShowDialog = new MutableLiveData<>(false);
2.在ModelView请求成功后给观察者赋值
public void search(){
Single<List<GoodsEntity>> single = Injection.provideGoodsRepository().queryGoods(goodsNum.get());
SingleObserver<List<GoodsEntity>> singleObserver = new SingleObserver<List<GoodsEntity>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e("--QUERY ALL--", "onSubscribe");
}
@Override
public void onSuccess(@NonNull List<GoodsEntity> goodsEntities) {
Log.e("result", GsonUtil.objectToString(goodsEntities));
Log.e("--QUERY ALL--", "onSuccess");
goodsEntityList=goodsEntities;
// getData();
isShowDialog.setValue(true);
}
@Override
public void onError(@NonNull Throwable e) {
Log.e("--QUERY ALL--", "onError");
}
};
single.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(singleObserver);
}
3.在dialog的onCreate中调用
viewModel.isShowDialog.observe((LifecycleOwner) context, new Observer<Boolean>() {
@Override
public void onChanged(Boolean aBoolean) {
if(aBoolean&&viewModel.goodsEntityList!=null){
new GoodsQueryDialog(context,fragment, viewModel.goodsEntityList).show();
}
}
});