ViewModel不工作?

时间:2018-05-14 17:41:31

标签: android

我遵循官方文档中提到的完全相同的内容。

public class MyViewModel extends ViewModel {
    private MutableLiveData<List<User>> users;
    public LiveData<List<User>> getUsers() {
        if (users == null) {
            users = new MutableLiveData<List<Users>>();
            loadUsers(); //the method is working fine
        }
        return users;
    }
}

然后是活动

public class MyActivity extends AppCompatActivity {
    public void onCreate(Bundle savedInstanceState) {
        // Create a ViewModel the first time the system calls an activity's onCreate() method.
        // Re-created activities receive the same MyViewModel instance created by the first activity.

        MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class);
        model.getUsers().observe(this, users -> {
            // update UI
        });
    }
}

我的加载用户方法工作正常。但IDE提供的错误是不支持lambda表达式。我还更新了JDK,但它仍然无法正常工作。

1 个答案:

答案 0 :(得分:3)

我认为更新JDK肯定会有用。但即使它不起作用,也没有必要使用Lambda表达式。

将代码转换为旧的方式。

model.getUsers().observe(this, new Observer<List<User>>() {
            @Override
            public void onChanged(@Nullable List<User> userList) {
                //do whatever you want with the list
            }
        });

尝试这种方式我相信它会起作用。

来源:Android ViewModel Tutorial