Итак, я использую базу данных 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
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)
}
...
}
LiveData
, который вы помещаете в свойствоsingleCourse
с помощью методаgetCourse
? Если вы начнете наблюдение до запуска этого метода, возможно, вы все еще наблюдаете за старым экземпляромLiveData
, который запросил пустую строку. В качестве шага отладки я бы попытался получить курс прямым, блокирующим способом (т. е. с дополнительным методом, который возвращаетCoursesEnt?
) внутриgetCourse
и посмотреть на значение, которое вы получите таким образом. - person zsmb13   schedule 07.07.2019coursesDao.getCourse(str).value
, который я вызываю в своем репозитории, который должен возвращатьCoursesEnt
- person Migaloco   schedule 07.07.2019