所以,我正在使用 Room 数据库来存储课程,并且我坚持使用返回具有我想要的名称(课程)的课程的方法,因为它总是返回 null。我已经减少了我的数据库,只有 2 门课程,课程变量为:
如上图所示,当我尝试使用 获取存储库中的 CourseEnt 时course = fun
,我可以在下面看到它存在,它返回一个带有空值的 LiveData,而不是我想要的 CourseEnt。
关于我做错了什么或我应该使用调试器查看什么的任何想法?
这是代码:
实体:
@Entity(tableName = "courses_table")
data class CoursesEnt (@PrimaryKey val course: String,
val location: String,
val description: String,
val difficulty: Double,
val distance: Double,
val photos: ListInt,
val category: String,
val activities: ListString)//ListString is a type converter that converts a String into a List<String> and vice-versa
道:
@Dao
interface CoursesDao {
@Query("SELECT * from courses_table ORDER BY course ASC")
fun getAllCourses(): LiveData<List<CoursesEnt>>
@Query("SELECT * FROM courses_table WHERE course LIKE :str")
fun getCourse(str: String):LiveData<CoursesEnt>
...
}
存储库:
class CoursesRepository(private val coursesDao: CoursesDao){
val allCourses: LiveData<List<CoursesEnt>> = coursesDao.getAllCourses()
var singleCourse: LiveData<CoursesEnt> = coursesDao.getCourse("")
@WorkerThread
fun getCourse(str: String) {
singleCourse = coursesDao.getCourse(str)
}
...
}