如何使用livedata进行数据绑定?
activity_user_detail.xml:
<data>
<variable
name="viewModel"
type="com.test.viewmodel.UserViewModel" />
</data>
<TextView
android:id="@+id/tv_amount"
android:layout_width="match_parent"
android:text="@{viewModel.age}"
....
Run Code Online (Sandbox Code Playgroud)
UserViewModel.java:
public class UserViewModel extends ViewModel {
public LiveData<User> user;
public void getUserById(UserDao userDao, String userId){
transaction = UserDao .load(userId);
}
}
Run Code Online (Sandbox Code Playgroud)
UserDao.java:
@Query("SELECT * FROM `user` WHERE id = :userId")
LiveData<User> load(String userId);
Run Code Online (Sandbox Code Playgroud)
UserDetailActivity.java:
private ActivityUserDetailBinding binding;
binding = DataBindingUtil.setContentView(this, R.layout.activity_user_detail);
viewModel = ViewModelProviders.of(this).get(UserViewModel.class);
viewModel.getUserById(userDao, userId);
viewModel.user.observe(this, user -> binding.setViewModel(user)); // How to bind livedata?
Run Code Online (Sandbox Code Playgroud)
我也尝试了这个:
binding.setViewModel(viewModel);
Run Code Online (Sandbox Code Playgroud)