Итак, я использую базу данных Room для хранения курсов, и я застрял в методе, который возвращает курс с нужным именем (курсом), потому что он всегда возвращает нуль. Я уменьшил свою базу данных, чтобы иметь 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:
@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>
...
}
Repository:
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)
}
...
}