我正在研究 Android Room Persistent 库。我还在我的项目中实现了双向数据绑定。在项目中,我通过填写表单并按行显示所有用户并通过单击特定用户行来更新它们来插入用户。下面是我的 UserDao 类:
@Dao
public interface UserDao {
@Query("SELECT * FROM user")
List<User> getAllUsers();
@Insert
void insertAll(User... users);
@Update
void updateUser(User... users);
@Query("SELECT * FROM user WHERE user_id IN (:userId)")
User getSpecifiedUser(int...userId);
}
对于数据绑定,我在 UserFormActivity 中绑定用户模型
binding.setUserModel(userModel);
现在,由于 Room 持久库不允许您在主线程中执行任何数据库操作,为了更新用户,我通过单击新线程中的行来获取用户表单中特定用户的数据,如下所示:
private void getUserFormData(final int userId) {
try {
Thread t = new Thread(new Runnable() {
public void run() {
userModel = db.userDao().getSpecifiedUser(userId);
}
}, "Thread A");
t.start();
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
在 userModel 中获取用户数据进行更新后,我希望用户数据反映在执行数据绑定的用户表单中,但它没有反映。我被这个问题困住了。