Android viewpager 中的片段 reyclerview 不工作
Android fragment reyclerview in viewpager not working
我有一个 fragment、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,片段将被销毁,因此当返回到选项卡 1 时,它应该调用 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每次都应该有一个新的适配器。
谢谢!
糟糕,我忘记在 for-each 循环之前调用 mList.clear() 了。谢谢大家
我有一个 fragment、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,片段将被销毁,因此当返回到选项卡 1 时,它应该调用 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每次都应该有一个新的适配器。
谢谢!
糟糕,我忘记在 for-each 循环之前调用 mList.clear() 了。谢谢大家