首页 > 解决方案 > 我在 ViewModel 中的 RecyclerView 崩溃应用程序 - kotlin android studio

问题描述

我在将 RecyclerView 放入 ViewModel 时遇到问题。没有视图模型的 RecyclerView 工作完美。

我的主要片段:

private lateinit var shoppingListViewModel: ShoppingListViewModel
private lateinit var categoryAdapter: CategoryAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        shoppingListViewModel = ViewModelProvider(requireActivity())[ShoppingListViewModel::class.java]
    }

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        binding.categoryRV.layoutManager = LinearLayoutManager(requireContext())
        shoppingListViewModel.allCategories.observe(viewLifecycleOwner, {   <-- when I add this line,
            updateCategories(it)                                                crashing my app
        })
    }


    private fun updateCategories(list: List<Category>) {
        categoryAdapter = CategoryAdapter(list)
        binding.categoryRV.adapter = categoryAdapter
    }

我的视图模型:

class ShoppingListViewModel(application: Application) : AndroidViewModel(application) {
    private val repository = Repository(application)
    val allCategories = repository.showAllCategories()
}

我的回购:

class Repository(app: Application) {
    private val shoppingListsDao = ShoppingListDatabaseBuilder.getInstance(app.applicationContext).shoppingListDao()

    fun showAllCategories(): LiveData<List<Category>> {
        return shoppingListsDao.showAllCategories()
    }
}

我的界面道:

@Dao
interface ShoppingListDao {

    @Query("SELECT * FROM category")
    fun showAllCategories(): LiveData<List<Category>>
}

一切看起来都很好,没有错误。我不知道发生了什么:(

标签: kotlinandroid-recyclerviewviewmodel

解决方案


我发现我的问题。

我需要更新版本数据库:)


推荐阅读