Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在MVVM设计模式中,从存储库更新ViewModel中的LiveData变量的推荐方法是什么?_Android_Design Patterns_Mvvm - Fatal编程技术网

Android 在MVVM设计模式中,从存储库更新ViewModel中的LiveData变量的推荐方法是什么?

Android 在MVVM设计模式中,从存储库更新ViewModel中的LiveData变量的推荐方法是什么?,android,design-patterns,mvvm,Android,Design Patterns,Mvvm,我是MVVM架构的初学者。我想从数据库中检索项目列表,并跟踪检索的项目数量。我遵循MVVM设计模式。以下是我想到的第一种方法: class SampleViewModel extends ViewModel { private MutableLiveData<Integer> count = new MutableLiveData<>(); getItems(); public void getItems() { Lis

我是MVVM架构的初学者。我想从数据库中检索项目列表,并跟踪检索的项目数量。我遵循MVVM设计模式。以下是我想到的第一种方法:

class SampleViewModel extends ViewModel
{
    private MutableLiveData<Integer> count = new MutableLiveData<>();

    getItems();

    public void getItems()
    {
        List<String> items = new ArrayList<>();

        /*
        * I am skipping the code to access the database and retrieving the list
        * */

        for (String item : items)
        {
            items.add(item);
            count.setValue(items.size());
        }
    }

    LiveData<Integer> GetCount()
    {
        return count;
    }
}
class SampleViewModel扩展了ViewModel
{
私有MutableLiveData计数=新的MutableLiveData();
getItems();
公共项目()
{
列表项=新建ArrayList();
/*
*我跳过了访问数据库和检索列表的代码
* */
用于(字符串项:项)
{
项目。添加(项目);
count.setValue(items.size());
}
}
LiveData GetCount()
{
返回计数;
}
}

然后观察我的活动中的
计数
数据。但是,后来我了解到,建议从存储库执行与数据库相关的任务,根据doc,不建议将LiveData变量从ViewModel传递到存储库。因此,我的问题是如何从存储库中更新
count
变量,或者换句话说,从存储库中更新ViewModel中的LiveData变量的建议方法是什么,以便可以正确地从活动中观察到它?

您可以使用回调机制,这是一个实现回调机制的示例,非常感谢您的回复。那么,从存储库中声明的viewmodel调用接口可以吗?