如何在Viewmodel(Java-Android)中实现自定义用户列表

时间:2019-05-30 22:30:26

标签: java android mvvm viewmodel android-livedata

我是一名初学者,我正在尝试使用MVVM和最新的Jetpack组件(与此案有关:Room,Navigation和LiveData)开发一个Android应用程序

我有一个用Room创建的用户数据库,在我的一个片段中,我必须显示这些用户的列表,但不是全部,仅显示具有特定ID的用户。根据我在应用中启动此片段的位置,此列表会更改(显示不同的用户)

每次我返回此片段时,都会重新创建它(据我所知,这就是导航的工作原理),但是我在确定如何避免此“自定义”用户列表每次从数据库重新加载数据时遇到问题创建视图,因为否则在应用程序访问数据库时,保存此列表的RecyclerView会瞬间“闪烁”。

这是我在Viewmodel中尝试执行的操作(这显然是错误的,但也许可以帮助您了解我正在尝试执行的操作)

public class UserViewModel extends AndroidViewModel {
private LiveData<List<User>> customUserList;
private UserRepository mUserRepository;

public LiveData<List<User>> getUsersForGroup(int groupId) {
        if(customUserList != null){
            return customUserList;
        } else {
            customUserList = mUserRepository.getUsersForGroup(groupId);
            return customUserList;
        }
    }

我可以想到一些“棘手的”方法,但是必须有一种正确的方法。

在这种情况下,我应该使用ViewModelFactory吗?如果是这样,我该如何实现呢?我找不到太多有关此的信息,我发现的内容是用Kotlin写的。

什么是正确的方法?

谢谢。

0 个答案:

没有答案