【问题标题】:Android custom dialog with MVVM带有 MVVM 的 Android 自定义对话框
【发布时间】:2018-09-27 10:20:31
【问题描述】:

我正在创建自定义对话框,当用户单击添加按钮时,我想要调用改造并观察更改,但我不知道如何将生命周期所有者传递给观察者

 private void observeViewModel(ProjectListViewModel viewModel) {
        // Update the list when the data changes
        viewModel.getProjectListObservable().observe( ***what to pass here ??*** , new Observer<List<Project>>() {
            @Override
            public void onChanged(@Nullable List<Project> projects) {
                if (projects != null) {
                    //…
                    projectAdapter.setProjectList(projects);
                }
            }
});

提前致谢

【问题讨论】:

  • 你应该把this 传递过去。因为您的活动是 LifeCycleOwner
  • 如果传递 this 不起作用,请尝试扩展 LifeCycleActivity
  • 无法通过这个,因为我正在扩展“Dialog”,而这不是 LifeCycleOwner

标签: android mvvm retrofit customdialog android-livedata


【解决方案1】:

试试这个解决方案。它对我有用。

在您调用对话框的位置创建一个活动字段,并将其传递给生命周期所有者

public class YourDialog extends DialogFragment {

private YourActivity activity;

    public static YourDialog newInstance(YourActivity activity) {
        YourDialog dialog = new YourDialog();
        dialog.activity = activity;
        return dialog;
    }

    private void observeViewModel(ProjectListViewModel viewModel) {
    // Update the list when the data changes
    viewModel.getProjectListObservable().observe( activity , new Observer<List<Project>>() {
        @Override
        public void onChanged(@Nullable List<Project> projects) {
            if (projects != null) {
                //…
                projectAdapter.setProjectList(projects);
            }
        }
    });

}

如果你愿意,可以参考 mvvm here 的例子

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多