【发布时间】:2020-06-29 05:13:57
【问题描述】:
我有三个片段,第一个 ListFragment 它是一个 Recyclerview 包含 firebase 集合的所有文档,第二个 FavoritesFragment 它是用户从第一个 Recyclerview 中选择的收藏夹项目的 Recyclerview。第三个DetailsFragment 显示从这两个recyclerviews 之一单击的项目的详细信息。我在我的应用中使用导航组件和 MVVM 架构。
我的问题是:我可以添加两个视图模型,一个用于 BlockListViewModel,一个用于 BlockListFavViewModel 到 onActivityCreated 中的 DetailsFragment 以从 firebase 获取 recyclerview 数据的适当位置,因为使用底部的这段代码我可以获得如果用户来自ListFragment,则位置正确,如果用户来自FavoritesFragment,则位置错误。
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
blockListViewModel = new ViewModelProvider(getActivity()).get(BlockListViewModel.class);
blockListViewModel.getBlockListModelData().observe(getViewLifecycleOwner(), new Observer<List<BlockListModel>>() {
@Override
public void onChanged(List<BlockListModel> blockListModels) {
Glide.with(getContext())
.load(blockListModels.get(position).getImage())
.centerCrop()
.placeholder(R.drawable.placeholder_image)
.into(detailsImage);
matTXT.setText(blockListModels.get(position).getMat());
finishedTXT.setText(blockListModels.get(position).getFinished());
cutTXT.setText(blockListModels.get(position).getCut());
assembleTXT.setText(blockListModels.get(position).getAssemble());
blockId = blockListModels.get(position).getBlock_id();
blockTitle = blockListModels.get(position).getName();
}
});
}
【问题讨论】:
-
是什么让你认为你只能拥有一个 ViewModel?
-
@ianhanniballake 因为我是 android 新手 :) .. 但我的问题是,如果用户来自特定片段,我如何使用特定视图模型,如果用户来自第二个片段,我如何使用其他视图模型.谢谢
标签: java android mvvm android-recyclerview android-jetpack