我的主Activity有一个片段,它有一个Recyclerview,用于检索从数据库填充的所有数据。在这个片段中,我得到了一个按钮,用于调用另一个Activity将对象插入到数据库中。
问题是当Activity结束并返回到Main Activity时,Recycler视图没有显示我刚创建的新条目。我尝试使用以下代码:
@Override
public void onResume() {
super.onResume();
adapterItem.addItem(MyApplication.getWritableDatabase().getAllItems());
listProjectsView.scrollToPosition(0);
}
函数getAllItems从sqlite中检索所有数据。
在我的adapterItem从我的Recyclerview我得到了这个:
public void addItem(ArrayList<Item> listItems) {
this.listItems = listItems;
notifyItemInserted(0);
}
它工作得“很好”。主要问题是当我切换到移动的中正在进行的另一个应用程序,然后返回到我开发的应用程序时,onResume 方法会打开并再次显示我最后的插入,填充两次这个项目(如果我再做一次,依此类推)。
谢谢
5条答案
按热度按时间lnxxn5zx1#
将新项目传递回MainActivity,然后自己处理它。
1.在MainActivity中,使用
startActivityForResult
启动第二个Activity,如下所示:REQUEST_CODE
是一个int
。2.在第二个活动中,如下所示覆盖
finish
:3.在MainActivity中,重写
onActivityResult
,如下所示:bvn4nwqk2#
您可以在显示回收视图的activity(比如firstActivity)中创建静态回收视图(比如mRecyclerview)。当您在其他activity(比如secondActivity)中向列表添加新项时,您可以使用
我使用这种方法有一段时间了,没有遇到任何性能缺陷,但可以肯定地是,用您自己代码测试它。
f1tvaqid3#
如果这能帮到谁...
我也是这样:“我的MainActivity有一个片段,其中有一个
RecyclerView
,用于检索从数据库填充的所有数据。在这个片段中,我得到了一个按钮,用于调用另一个activity(insertA)
将对象插入数据库。问题是,当
activity(insertA)
结束并返回到Main Activity时,RecyclerView
没有显示我刚刚创建的新项目。”所以我在
Fragment
按钮中使用了这个,它调用了另一个我刚刚调用的activity(insertA)
不使用
finish();
完成!!!!!!!!!!!!在
insertA
中,方法AddNewThingToTheDataBase()
中的活动不是finish();
或startActivity(Intent);
,而是onBackPressed();
并在Main Activity中添加以下代码
o75abkj44#
试试看像这样,
我希望它对你有用
fruv7luv5#
您可以将
recyclerView
设为静态,并在onCreate
方法中初始化它然后在MainActivity中创建一个方法,以显示
recyclerView
中的数据最后,调用另一个“活动”中的
displayDataOnRecyclerView
方法