要在两个变量改变时从Room数据库中获取数据,你可以使用LiveData和ViewModel来实现。下面是一个示例代码:
@Entity(tableName = "users")
public class User {
@PrimaryKey
public int id;
public String name;
public String email;
// 其他属性...
}
@Dao
public interface UserDao {
@Query("SELECT * FROM users")
LiveData> getAllUsers();
// 其他查询或更新操作...
}
@Database(entities = {User.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
public abstract UserDao userDao();
}
public class UserViewModel extends AndroidViewModel {
private LiveData> users;
private AppDatabase appDatabase;
public UserViewModel(Application application) {
super(application);
appDatabase = AppDatabase.getInstance(this.getApplication());
users = appDatabase.userDao().getAllUsers();
}
public LiveData> getAllUsers() {
return users;
}
}
public class MainActivity extends AppCompatActivity {
private UserViewModel userViewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
userViewModel = ViewModelProviders.of(this).get(UserViewModel.class);
userViewModel.getAllUsers().observe(this, new Observer>() {
@Override
public void onChanged(@Nullable List users) {
// 数据发生变化时的操作
}
});
}
}
通过使用LiveData和ViewModel,你可以在两个变量改变时从Room数据库中获取数据,并对数据的变化做出相应的操作。