代码之家  ›  专栏  ›  技术社区  ›  Muhamed Raafat

使用MVVM的Android自定义对话框

  •  0
  • Muhamed Raafat  · 技术社区  · 6 年前

    我正在创建自定义对话框,我希望用户单击“添加”按钮时调用“改装”并观察更改,但我不知道如何将lifecycleowner传递给观察者

     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);
                    }
                }
    });
    

    提前感谢

    1 回复  |  直到 6 年前
        1
  •  2
  •   Riddhi    6 年前

    尝试此解决方案。这对我有用。

    从调用对话框的位置创建活动字段,并将其传递给lifecycleowner

    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 如果你愿意