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();
                }
            }
        });
上一篇 下一篇

猜你喜欢

热点阅读