Android Запрос к базе данных комнат возвращает нулевой список - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь выяснить, что не так с запросом к базе данных, который я пытаюсь выполнить в своем приложении. Код точно такой же, как и другой запрос 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!")
            }})
    }
}

Я пытался получить запрос для работы с наблюдателем и без него (но он всегда возвращает ноль). Я также экспортировал базу данных, и данные там (поэтому пропавшие данные не проблема).

...