相关疑难解决方法(0)

如何使用livedata进行数据绑定?

如何使用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)

android android-databinding android-room android-livedata

6
推荐指数
1
解决办法
4217
查看次数