私はいくつかの同様の質問を読み、それを機能させようとしましたが、SaveItemアクティビティから戻った後、アダプターがrecyclerviewを更新しない理由を理解できません。だから私は2つのタブを持っています:すべてのメモとお気に入りのメモ。具体的には、アプリの画像です。
下からフローティングアクションボタンを押すと、新しいメモを記録できる新しいアクティビティが開始されますが、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();
}
}
クラスのリストを取り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
。
重要なのは、アダプターに渡されるリストの参照です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加