我遵循官方文档中提到的完全相同的内容。
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,但它仍然无法正常工作。
答案 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
}
});
尝试这种方式我相信它会起作用。