Room persistent library with new Thread and data-binding issue

Viewed 7063

I am working on Android Room Persistent library. I have also implemented Two-way data binding in my project. In the project, I am inserting users by filling a form and displaying all the users in rows and updating them by clicking particular user row. Below is my UserDao Class:

@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);
 }

For databinding I am binding User Model in UserFormActivity

binding.setUserModel(userModel);

Now, as Room persistent library doesn't allow you to do any database operation in Main thread, for updating the user, I am getting data of particular user in User Form by clicking in the row in new Thread as below:

 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();
    }
}

After getting data of user in userModel for updating, I want the User data to reflect in User Form where data binding is performed, but it's not reflecting. I am stuck with this issue.

1 Answers
Related