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);
}
我试图通过 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);
}