gpt4 book ai didi

android - 在RecyclerView中创建ViewModel的多个实例

转载 作者:行者123 更新时间:2023-12-03 11:01:58 25 4
gpt4 key购买 nike

我正在ViewModelonBindViewHolder内创建一个recyclerView;但是,尽管创建了ViewModel的新实例,但仍使用相同的ViewModel。看起来是这样的:

 @Override
public void onBindViewHolder(@NonNull final CatalogViewHolder holder, int position) {

if(componentData != null){
holder.binding.setComponentData(componentData.get(position));
holder.binding.setAdapter(adapter);
CatalogAdapterViewModelFactory factory = new CatalogAdapterViewModelFactory(MyApp.getApplication(), componentData.get(position).getId());
SliderViewModel sliderViewModel = ViewModelProviders.of(fragment, factory).get(SliderViewModel.class);

sliderViewModel.getPayloadListObservable().observe(fragment, new Observer<SliderData>() {
@Override
public void onChanged(SliderData payloads) {
adapter.updateAdapterInfo(payloads.getPayload());

}
});
}
}

如何在相同的片段/ View 中创建 ViewModel的新实例?

最佳答案

ViewModel与所有者(在这种情况下为Fragment)相关联。只要将相同的Fragment传递给factory方法,您将获得相同的viewmodel。

您不应为此使用arch组件中的ViewModel,而必须每次手动对其进行实例化。

你的问题是这条线

SliderViewModel sliderViewModel = ViewModelProviders.of(fragment, factory).get(SliderViewModel.class);

你需要这样的东西
SliderViewModel sliderViewmodel = new SliderViewModel( /* pass stuff here */)

关于android - 在RecyclerView中创建ViewModel的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57227307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com