繁体   English   中英

从Android中的RecyclerView子ViewModel调用父ViewModel

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM