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);
}
});
}