问题
I am creating custom dialog and i want when the user click add button go and call retrofit and observe on changes but i don't know how to pass lifecycleowner to the observer
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);
}
}
});
thanks in advance
回答1:
Try this solution. It worked for me.
Create a field of your activity from where you are calling the dialog and pass this in place of 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);
}
}
});
}
You can refer the example of mvvm here if you want
来源:https://stackoverflow.com/questions/49878279/android-custom-dialog-with-mvvm