如何在不重新启动活动的情况下更新回收器视图(来自sqlite的数据)



我有一个单一的活动应用程序(MainActivity)与对话框片段。DialogFragment将数据添加到sqlite数据库,MainActivity将数据显示在一个回收器视图中。我遇到的问题是,当我点击"添加"按钮时在DialogFragment中并解散它,新插入的数据不会显示在回收器视图中,直到活动被重新创建。

如何在不重新启动应用程序的情况下显示新数据。我已经添加了"recyclerViewAdapterObject.notifyDataSetChanged"在DialogFragment类,但它仍然不工作!

您可以通过以下活动生命周期方法解决此问题。你只需要重写onResume()方法。把你的"数据获取"代码并在onResume()方法中设置适配器,并在数据保存之后和DialogFragment解散之前调用onResume()。这就解决了你的问题。但不推荐使用. 你应该学会使用ViewModel, LiveData。

的例子:

override fun onResume() {
super.onResume()
findViewById<RecyclerView>(R.id.rvSocket).also { rv ->
var userList : List<User> = fatchDataFromSQLite()
rv.layoutManager = LinearLayoutManager(this)
rv.setHasFixedSize(true)
adapter = UserAdapter(userList)
rv.adapter = adapter
}
}

然后调用onResume()方法,在此您通过按钮单击保存数据,然后解散您的DialogFragment。

最新更新