kotlin - 我在 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>>
}
一切看起来都很好,没有错误。我不知道发生了什么:(
解决方案
我发现我的问题。
我需要更新版本数据库:)
推荐阅读
- python - 如何使用 Flask-JWT-Extended 的 create_access_token() 设置 JWT 的“iss”声明
- android - 为什么 Android Studio 中的模拟器即使在 AVD 列表中显示后也不与项目关联?
- python - 连体网络为每对图像分配相同的标签
- python-3.x - 如何在 django 中使用 request.GET[] 从收音机和日期输入中获取值
- r - 如何通过更新值来连接两个数据帧包含 r 中匹配 id 的重复项
- javascript - pg-promise UPDATE 返回成功返回码但实际上不更新表
- react-native - 不使用 React native 和 Flask/Flask jwt-extended 存储的 Cookie
- css - 响应式网站,使 div 全屏和用户向下滚动以查看其他人
- ubuntu-18.04 - 纱线安可产品失败
- sql - 如何找到具有相等值的行?