【发布时间】:2023-03-13 14:57:01
【问题描述】:
我有一个带有实时数据变量的 sharedViewModel,它将数据发送到我的片段,一切顺利,我可以捕获片段中的变量。 但是,按照建议,我在 onViewCreated 中获取 sharedViewModel,如下所示:
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
DataInitialViewModel initial = new ViewModelProvider(requireActivity()).get(DataInitialViewModel .class);
initial .getStatusUser().observe(getViewLifecycleOwner(), new Observer<String>() {
@Override
public void onChanged(String s) {
if(ConstsSubscribe.USER_STANDARD.equals(s)){
if(adapter != null)
isAssinante = true;
Toast.makeText(getContext(), "test", Toast.LENGTH_SHORT).show(); // Never enter here
}else{
if(adapter != null)
isAssinante = false;
Toast.makeText(getContext(), "comaefeq", Toast.LENGTH_SHORT).show(); // Never enter too...
}
}
});
}
问题是我在 onCreateView 中填充了一个适配器,但是,该适配器是使用 Firebase 数据填充的(这需要一些时间)。 因此,即使使用观察者,当适配器与 null 不同时,我的变量也永远无法捕获,使其始终为 null,我永远无法将变量的状态传递给适配器。有什么方法可以在我的适配器中捕获我的实时数据?
adapter = new DieAdapter(root.getContext(), dieArrayListAdp, manager, isAssinante); // var isAssinante is never updated... adapter is send to ViewPager2 to setAdapter command after.
【问题讨论】:
标签: android viewmodel android-livedata android-viewpager2 mutablelivedata