我无法弄清楚为什么我的适配器没有更新我的recyclerview

时间:2016-07-23 23:32:11

标签: android tabs fragment android-recyclerview onresume

我已经阅读了一些类似的问题并且我试图让它工作但我无法理解为什么我的适配器在从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();
    }
}

1 个答案:

答案 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中删除该功能。

关键是你的列表的引用正被传递给适配器。