Android 使用 MVVM 的自定义对话框
Android custom dialog with MVVM
我正在创建自定义对话框,我希望当用户单击添加按钮时转到并调用改造并观察更改,但我不知道如何将 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);
}
}
});
提前致谢
试试这个解决方案。它对我有用。
从调用对话框的位置创建 activity 字段,并将其传递给 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
我正在创建自定义对话框,我希望当用户单击添加按钮时转到并调用改造并观察更改,但我不知道如何将 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);
}
}
});
提前致谢
试试这个解决方案。它对我有用。
从调用对话框的位置创建 activity 字段,并将其传递给 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