guoshen
2024-06-29 5325e22a184b53aadcc5e9552cb1ec54f9c8ad81
app/src/main/java/com/application/zhangshi_app_android/ui/function/FamilyMemorabiliaActivityViewModel.java
@@ -40,10 +40,15 @@
    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();
@@ -51,34 +56,60 @@
    /**
     * 获取家大事记
     */
    //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());
                    }
@@ -228,7 +259,9 @@
        this.checkListLiveData = checkListLiveData;
    }
    @NonNull
    @NonNull    //NonNull 用于标记方法参数、返回值、字段或方法的返回类型不允许为 null
    //getRequestBeanLiveData() 获取一个包含 FamilyMemorabiliaRequestBean 数据的 MutableLiveData 对象。
    public MutableLiveData<FamilyMemorabiliaRequestBean> getRequestBeanLiveData() {
        if (requestBeanLiveData == null){
            requestBeanLiveData = new MutableLiveData<>();