首页 > 解决方案 > 将视图模型作为参数传递

问题描述

在其他类中引用视图模型作为参数是否合适/可接受?有没有内存泄漏?

LoadData(viewmodel)

MainFragment.java

public class MainFragment extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        
        //DataViewModel
        DataViewModel model = new ViewModelProvider(requireActivity()).get(DataViewModel.class);
        
        //This is the callback method with viewmodel as argument
        new GetDataUtil().LoadData(model);
      
        model.getListData().observe(getViewLifecycleOwner(), item -> item.getNote()); //UI update work in progress
        return view;
    }
}

GetDataUtil.java

public class GetDataUtil {
    List<Note> listData = new ArrayList<>();

    //Asynchronous method to load data from internet, in this case firestore
    //This is what I mean when using viewmodel as parameter
    public void LoadData(DataViewModel model){

        //Asynchronous task start block {                
                listData.add(Note); //For loop add data from querysnapshot
                model.getListData().setValue(listData);
        //Asynchronous task end block }
    }
}

数据视图模型.java

public class DataViewModel extends ViewModel {
    private MutableLiveData<List<Note>> listData = new MutableLiveData<>();

    public MutableLiveData<List<Note>> getListData(){
        return listData;
    }
}

我仍然是android开发的初学者,如果有人向我展示有关使用viewmodel的规则的相关文章或文档会更好,就是我想要理解的。谢谢

标签: javaandroidviewmodel

解决方案


推荐阅读