在viewpager中Android片段reyclerview无法正常工作

时间:2016-02-09 07:46:31

标签: android android-fragments android-viewpager android-recyclerview android-tabs

我有一个片段,recyclerview,viewpager问题,我已经坚持了几个星期了。

我有四个标签,每个标签都有一个片段,标签1和标签4都有回收者视图。但是,当我来回走动时,出于某种原因,我在循环器视图中的列表最初是空的,直到我点击一个调用updateUI()的按钮:

  ...
  mResult = realmResults.get(0);

  for(int i = 0; i < mResult.getItems().size(); i++){
     mList.add(mResult.getItems.get(i));
  {

  if(mRecyclerView.getAdapter() == null) {
        mAdapter = new MultViewAdapter(mList);
        mSubjectRecyclerView.setAdapter(mAdapter);
    } else {
        mAdapter.notifyDataSetChanged();
    }

但是当调用它时,显示的列表会增加1,而它应该仍然相同。可能在原始文件上创建另一个列表,因为每次我在选项卡中来回移动时,它只会在列表中添加一个额外的项目。

此外,在logcat上,每次访问该选项卡时都会显示以下错误。

RecyclerView: No adapter attached; skipping layout

根据我的理解,在进入选项卡4后,片段将因为方法setOffscreenPageLimit而被销毁,因此当返回到tab1时,它应该调用onCreateView,然后应该创建一个新的适配器并显示列表。 我不明白该列表最初是如何空的。我的onCreateView是:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.activity_subject_list, container, false);
    realm = Realm.getDefaultInstance();
    mSubjectRecyclerView = (RecyclerView) view.findViewById(R.id.subject_recycler_view);

    mSubjectRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

    updateUI();

    return view;
}

因此,recyclerview每次都应该有一个新的适配器。

谢谢!

1 个答案:

答案 0 :(得分:0)

Opps,我忘了在for-each循环之前调用mList.clear()。谢谢大家。