数据库更改时更新适配器

Update adapter when database changes

提问人:psi 提问时间:11/2/2023 更新时间:11/16/2023 访问量:20

问:

我正在制作一个简单的应用程序,该应用程序具有带有 .主活动从类中获取注释,并将注释设置到适配器中。RecyclerViewSQLiteOpenHelper

还有其他活动可以创建新笔记并将其记录在数据库中。没有“保存”按钮,因此保存工作以如下方法完成:onStop()

    override fun onStop() {
        super.onStop()
        val textInputEditTitle : TextInputEditText = this.findViewById(R.id.textInputNoteTitle)
        val textInputEditText : TextInputEditText = this.findViewById(R.id.textInputNoteText)
        note = Note(textInputEditTitle.text.toString(), textInputEditText.text.toString())
        val dbHandler = DbHandler(this)
        dbHandler.insertNote(note)
        dbHandler.close()
    }

问题是当返回到主活动时,RecyclerView 不显示新注释。

我在主要活动中尝试过这个:

    override fun onResume(){
        super.onResume()
        notes = dbHandler.getNotes()
        for(note in notes) Log.d(TAG, note.toString())
        noteAdapter.setData(notes)
        noteAdapter.notifyDataSetChanged()
    }

但是日志只显示旧笔记,而不显示新笔记。

理想情况下,我想从类中的 insert update 和 delete 方法调用以更新 noteApater 的数据,因此每次更新 db 时,适配器也会更新。我不能这样做,因为第二个活动必须知道启动数据库的适配器。SQLiteOpenHelper

有什么建议吗?

Android SQLITE kotlin android-recyclerview

评论

0赞 Sai Dilip 11/16/2023
您可以使用 Room DB 并从 DB 获取观察者,并在您的活动中观察它,如果您是 android Room 的新手,您可以使用此 android 官方教程来学习东西 - developer.android.com/codelabs/...

答:

0赞 Sai Dilip 11/16/2023 #1

您可以使用 Room DB 并从 DB 获取观察者,然后在您的活动中观察它 如果你是android Room的新手,你可以使用这个android官方教程来学习东西 - https://developer.android.com/codelabs/android-room-with-a-view-kotlin#0