Я пытаюсь выяснить, что не так с запросом к базе данных, который я пытаюсь выполнить в своем приложении. Код точно такой же, как и другой запрос Room, который я сделал в своем приложении, но по какой-то причине каждый раз, когда я пытаюсь выполнить запрос, он возвращает пустой список. Я использую следующий код:
Соответствующий код DAO:
@Dao
interface SkillsBookDao {
@Query("SELECT * FROM SkillsBook")
fun getSkillsBook(): LiveData<List<SkillsBook>>
@Insert
fun addAllSkills(vararg skills:SkillsBook)
}
Соответствующий код хранилища:
fun getSkillsBook():LiveData<List<SkillsBook>> = skillsBookDao.getSkillsBook()
Код ViewModel:
class BookDataViewModel:ViewModel() {
private val heroRepository = HeroRepository.get()
val skillListLiveData = heroRepository.getSkillsBook()
}
Код во фрагменте:
class SkillListFragment:Fragment() {
private val skillDataViewModel: BookDataViewModel by lazy {
ViewModelProviders.of(this).get(BookDataViewModel::class.java)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_skill_list, container,false)
val listSkills: List<SkillsBook>? = skillDataViewModel.skillListLiveData.value
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
skillDataViewModel.skillListLiveData.observe(viewLifecycleOwner,
Observer{skills -> skills?.let {
Log.i(TAG,"Got ${skills.size} skills!")
}})
}
}
Я пытался получить запрос для работы с наблюдателем и без него (но он всегда возвращает ноль). Я также экспортировал базу данных, и данные там (поэтому пропавшие данные не проблема).