[英]Android Room - Query to return LiveData but limited by userId
我试图通过 userId 限制我的搜索结果。 所以例如
道
@Query("SELECT * FROM exampleTable WHERE userId = :userId");
LiveData<List<Users>> getRecordsByUserId (long userId);
存储库
private long userId;
private LiveData<List<WorkoutLogsAllPojo>> weeklyWorkoutLogs;
public WorkoutLogsRepository(Application application) {
weeklyWorkoutLogs = workoutLogsDao.getWorkoutLogsWeekly(userId);
}
public LiveData<List<WorkoutLogsAllPojo>> getWorkoutLogsWeekly() {
return weeklyWorkoutLogs;
}
视图模型
private long userId;
private LiveData<List<WorkoutLogsAllPojo>> weeklyWorkoutLogs;
public WorkoutLogsViewModel(@NonNull Application application) {
super(application);
weeklyWorkoutLogs = workoutLogsRepository.getWorkoutLogsWeekly(userId);
}
public LiveData<List<WorkoutLogsAllPojo>> getWorkoutLogsWeekly() {
return weeklyWorkoutLogs;
}
活动
private void getWorkoutLogsWeekly() {
workoutLogsViewModel.getWorkoutLogsWeekly(userId).observe(this, new Observer<List<WorkoutLogsAllPojo>>() {
@Override
public void onChanged(List<WorkoutLogsAllPojo> result) {
}
}
);
}
我当前的代码返回 0 条记录。 如果我从代码中删除 userId 内容,它将返回所有记录。 有人可以帮我在此代码中实现 userId 约束,因此查询将只返回链接到该 userId 的记录。
找到了解决方案:
将 Viewmodel 和存储库更新为:
public LiveData<List<WorkoutLogsAllPojo>> getWorkoutLogs(long userId) {
return WorkoutLogs = workoutLogsRepository.getWorkoutLogs(userId);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.