繁体   English   中英

Android Room - 查询返回 LiveData 但受 userId 限制

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM