我已经阅读了一些类似的问题并且我试图让它工作但我无法理解为什么我的适配器在从SaveItem活动返回后没有更新我的recyclerview。所以我有两个标签:所有笔记和最喜欢的笔记。更具体地说:App image
当我从底部按下浮动操作按钮时,它会启动一个新活动,我可以在其中录制新笔记,但是当我返回MainActivity时,第一个片段没有更新我的recyclerview:
这是我填充适配器的地方:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
adapter = new NoteAdapter(fillAdapter(),this,getActivity());
recycler.setAdapter(adapter);
recycler.setLayoutManager(new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false));
}
以下是我尝试更新我的Recyclerview的地方:
@Override
public void onResume() {
super.onResume();
adapter.addAll(fillAdapter());
recycler.setAdapter(adapter);
}
这是我的addAll
方法:
public class NoteAdapter extends RecyclerView.Adapter<NoteAdapter.ViewHolderNote> {
// Other codes....
public void addAll(List<Note> newNotes) {
this.notes.clear();
this.notes.addAll(newNotes);
this.notifyDataSetChanged();
}
}
答案 0 :(得分:0)
在Note
课程中列出Fragment
。
private List<Note> allNotes;
然后在onActivityCreated
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
allNotes = fillAdapter();
adapter = new NoteAdapter(allNotes, this, getActivity());
recycler.setAdapter(adapter);
recycler.setLayoutManager(new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false));
}
现在更新您的列表再次调用fillAdapter
函数再次弹出allNotes
列表并修改您的onResume
。
@Override
public void onResume() {
super.onResume();
allNotes = fillAdapter();
adapter.notifyDatasetChanged();
}
addAll
功能现在没有必要。从NoteAdapter
中删除该功能。
关键是你的列表的引用正被传递给适配器。