Android Room - 查询 return LiveData 但受 userId 限制

Android Room - Query to return LiveData but limited by userId

我试图通过 userId 限制我的搜索结果。例如

DAO

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

ACTIVITY

  private void getWorkoutLogsWeekly() {

    workoutLogsViewModel.getWorkoutLogsWeekly(userId).observe(this, new Observer<List<WorkoutLogsAllPojo>>() {
                @Override
                public void onChanged(List<WorkoutLogsAllPojo> result) {

                }
        }
    );
}

我的当前代码returns 0条记录。如果我从代码中删除 userId 内容,它将 return 所有记录。有人可以帮我在这段代码中实现 userId 约束,这样查询只会 return 链接到该 userId 的记录。

找到解决方案:

将视图模型和存储库更新为:

 public LiveData<List<WorkoutLogsAllPojo>> getWorkoutLogs(long userId) {
    return WorkoutLogs = workoutLogsRepository.getWorkoutLogs(userId);
}