| | |
| | | private MutableLiveData<FamilyMemorabiliaRequestBean> requestBeanLiveData;//请求参数 |
| | | private MutableLiveData<List<FamilyMemorabiliaBean>> moreListLiveData;//下拉加载数据 |
| | | private MutableLiveData<List<FamilyMemorabiliaBean>> finishDeleteListLiveData;//已经完成删除的数据,用于adapter的remove操作 |
| | | |
| | | //创建并初始化ViewModel |
| | | public FamilyMemorabiliaActivityViewModel(@NonNull Application application) { |
| | | super(application); |
| | | } |
| | | |
| | | |
| | | //DataRepository 是一个数据仓库类,负责管理数据的获取和存储, |
| | | // 该方法通过调用 DataRepository.getInstance() 来获取 DataRepository 的单例实例,并将其返回model。 |
| | | @Override |
| | | protected DataRepository initModel() { |
| | | return DataRepository.getInstance(); |
| | |
| | | /** |
| | | * 获取家大事记 |
| | | */ |
| | | |
| | | |
| | | |
| | | //getRequestBeanLiveData().getValue() 检查请求数据的 LiveData 是否为空。 |
| | | // 如果为空,则创建一个新的 FamilyMemorabiliaRequestBean 对象,并将其设置为 LiveData 的值,以确保请求数据不为 null。 |
| | | public void getFamilyMemorabilia() { |
| | | if (getRequestBeanLiveData().getValue() == null){ |
| | | getRequestBeanLiveData().setValue(new FamilyMemorabiliaRequestBean()); |
| | | } |
| | | //设置请求数据对象的页码为 1,表示要获取第一页的数据。 |
| | | getRequestBeanLiveData().getValue().setPageNum(1); |
| | | |
| | | //通过model(ViewModel 中的数据仓库对象)发起网络请求,并将请求数据转换为 Map 类型,以便发送给服务器。 |
| | | model.getFamilyMemorabilia(getRequestBeanLiveData().getValue().toMap()) |
| | | |
| | | //应用线程调度器,确保观察者在正确的线程上运行。 |
| | | .compose(RxUtils.schedulersTransformer()) |
| | | |
| | | //订阅这个网络请求的结果 |
| | | .subscribe(new Observer<ResultData<PageResponseBean<FamilyMemorabiliaBean>>>() { |
| | | @Override |
| | | |
| | | //将订阅对象添加到 addSubscribe() 中,以便在不再需要时取消订阅。 |
| | | //创建 Disposable 对象来管理订阅 |
| | | // 使用 Disposable,可以有效地管理异步操作的生命周期,确保资源在不再需要时被正确释放。 |
| | | |
| | | public void onSubscribe(Disposable d) { |
| | | addSubscribe(d); |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | //onNext()处理成功获取数据的情况 |
| | | public void onNext(ResultData<PageResponseBean<FamilyMemorabiliaBean>> data) { |
| | | if (data.getCode() == CODE_SUCCESS){ |
| | | if (data.getData().getData().isEmpty()){ |
| | | |
| | | //更新界面状态为 StateViewEnum.DATA_NULL |
| | | changeStateView(StateViewEnum.DATA_NULL); |
| | | }else { |
| | | //隐藏状态视图并将数据列表发布到 dataListLiveData |
| | | changeStateView(StateViewEnum.HIDE); |
| | | dataListLiveData.postValue(data.getData().getData()); |
| | | } |
| | | |
| | | //如果返回的数据不成功,则将服务器返回的消息发布到 messageLiveData,以便通知用户。 |
| | | }else { |
| | | messageLiveData.postValue(data.getMsg()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | //onError()处理发生错误的情况,将错误消息发布到 messageLiveData。 |
| | | public void onError(Throwable e) { |
| | | messageLiveData.postValue(e.getMessage()); |
| | | } |
| | |
| | | this.checkListLiveData = checkListLiveData; |
| | | } |
| | | |
| | | @NonNull |
| | | @NonNull //NonNull 用于标记方法参数、返回值、字段或方法的返回类型不允许为 null |
| | | |
| | | //getRequestBeanLiveData() 获取一个包含 FamilyMemorabiliaRequestBean 数据的 MutableLiveData 对象。 |
| | | public MutableLiveData<FamilyMemorabiliaRequestBean> getRequestBeanLiveData() { |
| | | if (requestBeanLiveData == null){ |
| | | requestBeanLiveData = new MutableLiveData<>(); |