提问者:小点点

如何使用Kotlin和room来更新RecyclerView?


我试图显示数据从我的房间数据库在回收视图,它工作良好,除了当我填写新的数据和尝试更新我的回收视图它不更新。 下面是我尝试使用的部分代码:

Mainactivity.kt

        val adapter = MainAdapter(myData)
        recyclerView.layoutManager = LinearLayoutManager(this)
        recyclerView.adapter = adapter

MainAdapter.kt

        fun updateData(data: List<NewList>) {
            val currentList: MutableList<Health> = mutableListOf()
            currentList.clear()
            currentList.addAll(data)
            notifyDataSetChanged()
        }

我试图从片段文件调用这个函数,这样它就可以从房间数据库传递更新的列表(一旦有人打开那个片段,它就会更新列表)

fragment.kt

        var myData = App.instance.db.getAllDao().getAllEntries()
        val adapter = MainAdapter(myData)
        adapter.updateData(myData)

我在updateData()函数中打印了更新的列表,它确实显示了更新的列表,并且尝试打印了ItemCount,它也显示了更新的ItemCount,但是没有用新数据更新实际显示。


共2个答案

匿名用户

MainActivity和fragment中附加到RecycerView的适配器不相同。

匿名用户

只需删除Fragment中的适配器创建,并将适配器实例传递给Fragment,然后调用updateData方法,以便能够填充适配器。