Java Can';除非重新启动应用程序,否则无法从DAO获取最新数据

Java Can';除非重新启动应用程序,否则无法从DAO获取最新数据,java,android,Java,Android,我有一个项目,这是一个简单的备忘录应用程序。在我的RecyclerView中显示最新数据时出现问题。每次用户添加新备忘录时,我都必须重新启动应用程序才能看到新的更改。我该怎么修 MainActivity(其中,RecyclerView) 您可以这样做: 在MemoAdapter类中,添加一个方法: public void setViewItems(List<Note> viewItems) { this.viewItems = viewItems notifyData

我有一个项目,这是一个简单的备忘录应用程序。在我的
RecyclerView
中显示最新数据时出现问题。每次用户添加新备忘录时,我都必须重新启动应用程序才能看到新的更改。我该怎么修

MainActivity(其中,
RecyclerView


您可以这样做:

MemoAdapter类中,添加一个方法:

public void setViewItems(List<Note> viewItems) {
    this.viewItems = viewItems
    notifyDataSetChanged()
}
public void setViewItems(列出viewItems){
this.viewItems=viewItems
notifyDataSetChanged()
}
并更新以下方法:

private void insertDummyData(){
    mRepository.getAllMemos().observe(this, new Observer<List<Note>>() {
        @Override
        public void onChanged(List<Note> notes) {
            if (mNotes.size() > 0){
                notes.clear();
            }
            if (notes != null){
                mNotes.addAll(notes);
            }
            mMemoAdapter.setViewItems(mNotes);
        }
    });

}
private void insertDummyData(){
mRepository.getAllMemos().observe(这个,新的观察者(){
@凌驾
更改后的公共作废(列表注释){
如果(mNotes.size()>0){
notes.clear();
}
如果(注意!=null){
mNotes.addAll(注释);
}
mMemoAdapter.setViewItems(mNotes);
}
});
}

这根本没用。顺便说一句,你必须公开这个方法^^^你能试着解释一下你是如何试图实现的吗?您正在其他活动中保存备忘录?当你移动到列表活动时,新添加的项目不会显示,一旦你重新启动应用程序,新添加的项目就会显示。对吗?如果是这样,那么我建议调用
insertDummyData()
onResume
方法,而不是从
onCreate()
加上上面注释中的一个。当列表视图需要刷新时,您应该始终在onResume而不是onCreate中进行刷新。这样,如果你进入一个新的对话框,比如说,添加一条记录,然后返回列表视图,onResume将被调用并重新填充列表。
@Dao
public interface MemoInterface {
    @Insert
    void insertMemo(Note... note);

    @Query("SELECT * FROM note")
    LiveData<List<Note>> getAllMemos();
}
@Override
public void onClick(View v) {
    switch (v.getId()) {

        case R.id.save_memo: {
            //test
            mNote.setTitle(editTitle.getText().toString());
            mNote.setContent(content.getText().toString());
            mNote.setTimestamp("00 0000");
            mRepository.insertNewMemo(mNote);
            finish();
            break;
        }
    }
}
public void setViewItems(List<Note> viewItems) {
    this.viewItems = viewItems
    notifyDataSetChanged()
}
private void insertDummyData(){
    mRepository.getAllMemos().observe(this, new Observer<List<Note>>() {
        @Override
        public void onChanged(List<Note> notes) {
            if (mNotes.size() > 0){
                notes.clear();
            }
            if (notes != null){
                mNotes.addAll(notes);
            }
            mMemoAdapter.setViewItems(mNotes);
        }
    });

}