Java RecyclerView没有';t修改数据库后刷新';s排

Java RecyclerView没有';t修改数据库后刷新';s排,java,android,database,android-viewpager,android-recyclerview,Java,Android,Database,Android Viewpager,Android Recyclerview,我正在为Android编写一个应用程序。我把它上传到GitHub: 我有一个ViewPager(MainActivity.java)控制两个片段。在第一个片段(FirstFragment.java)上,您可以添加出现在RecyclerView(也在FirstFragment.java上)上的人员(People.java)。单击RecyclerView上的一个列表项时,其详细信息(名称和id)将显示在第二个片段(SecondFragment.java)上。java还包含一个按钮,您可以使用该按钮删

我正在为Android编写一个应用程序。我把它上传到GitHub:

我有一个ViewPager(MainActivity.java)控制两个片段。在第一个片段(
FirstFragment.java
)上,您可以添加出现在RecyclerView(也在
FirstFragment.java
上)上的人员(People.java)。单击RecyclerView上的一个列表项时,其详细信息(名称和id)将显示在第二个片段(
SecondFragment.java
)上。java还包含一个按钮,您可以使用该按钮删除所选人员

为了存储人员对象,我使用了一个人员列表,并使用PeopleLab.java中的方法对其进行管理。该程序运行良好:我可以将人员对象添加/删除到列表中,并显示在RecyclerView fine上。
之后,我决定用一个数据库替换这个列表。它只意味着创建数据库(数据库文件夹中的3个文件),并在
PeopleLab.java
中编辑已有的方法和两个新方法。其他的档案没有动过。 数据库按预期工作(使用sqlite3检查),我可以像以前一样添加/删除人员,查询也可以工作。我唯一的问题是,这些更改不会出现在RecyclerView上。但如果我关闭并重新打开应用程序,就会出现更改。 就像RecyclerView不关心运行时的数据库,只关心应用程序启动(或关闭,不确定)时的数据库

你知道是什么导致了这个问题吗?我唯一的猜测是我错过了一些关于Android应用程序如何处理数据库的东西


注意:对不起,我的英语不好。

它不会自动工作。您可以使用通知适配器基础数据已更改,以便适配器可以获取和重新加载数据。可以使用
adapter.notifyDataSetChanged()


或者可以使用来实现与在适配器上调用
notifyDataSetChanged()
相同的

,但不为该适配器提供任何新数据

在您的
第一个片段中

private void updateUI() {
    PeopleLab peopleLab = PeopleLab.get(getActivity());
    List<People> peoples = peopleLab.getPeople();

    if(mAdapter == null) {
        mAdapter = new PeopleAdapter(peoples);
        mRecyclerView.setAdapter(mAdapter);
    } else {
        // You actually have to change your dataset
        mAdapter.changeDataSet(peoples);
    }
}
这是一种残忍的方式。
最好在插入/删除时通知适配器调用
notifyItemInserted(int-itemPosition)
notifyItemRemoved(int-itemPosition)
。(顺便说一句,刷新数据集)

我已经在使用notifyDataSetChanged()。它是在按钮的onClickListener中调用的(它将新行添加到数据库中),我还有另一个按钮,它的唯一用途是调用它。
public void changeDataSet(List<People> people) {
    this.mPeoples = people;
    notifyDataSetChanged();
}