[英]Call parent ViewModel from RecyclerView child ViewModel in Android
我有一个带有RecyclerView和ViewModel的视图,有一个对象列表,然后用适配器和ViewHolder填充了RecyclerView。
每个对象都是一个ViewModel,它具有一个click事件,后者会转到一个Detail,在触发click事件时,应用会向服务器请求数据,如果数据正确,则会导航到Detail屏幕。
我进行了“加载”检查,以防止用户按下同一孩子两次,但是由于每个孩子都有自己的viewmodel实例,因此如果按下快速不同的按钮(比服务器响应速度快),则会全部触发。
那么,是否有必要调用RecyclerView viewmodel子级的父viewmodel或其他任何选项? 实际上,我可以考虑单身以保持孩子的装载状态。
在您的视图模型中添加一个布尔属性,如smt: isLoading
,并在调用webservice时将其设置为true
,而isLoading == true
禁用视图子项的click事件。
最后,我使用的是带有和AtomicBoolean的单例,如下所示:
public final class LoadingStatusSingleton {
private static final LoadingStatusSingleton ourInstance = new LoadingStatusSingleton();
public static LoadingStatusSingleton getInstance() {
return ourInstance;
}
private LoadingStatusSingleton() {
isLoading = new AtomicBoolean(false);
}
private AtomicBoolean isLoading;
public synchronized boolean getLoading() {
return isLoading.get();
}
public synchronized void setLoading(boolean value) {
isLoading.set(value);
}
}
然后根据需要从不同的viewmodel实例将AtomicBoolean更改为true或false。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.