【发布时间】:2017-01-06 10:52:02
【问题描述】:
我有一个包含 viewpager 的片段。 viewpager 本身包含包含 recyclerview 和 textview 的片段。问题是 textview 显示在所有 5 个选项卡中,但 recyclerview 仅显示在 2-3 tabs(randomly) 。
这是我的代码
父片段
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
toolbar = (Toolbar) fragmentActivity.findViewById(R.id.my_toolbar);
tabLayout = (TabLayout) fragmentActivity.findViewById(R.id.my_tablayout);
mCollapsingToolbarLayout = (CollapsingToolbarLayout) fragmentActivity.findViewById(R.id.collapsing_toolbar_layout);
viewPager = (ViewPager) fragmentActivity.findViewById(R.id.my_pager);
((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
adapter = new GameListPagerAdapter(getChildFragmentManager(),getContext());
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(1);
tabLayout.setupWithViewPager(viewPager);
}
ViewPager 适配器
public class GameListPagerAdapter extends FragmentStatePagerAdapter {
private final int PAGE_COUNT = 5;
private Context context;
private String pageTitle[] = {"Replaying", "Planning", "dropped", "playing","completed"};
public GameListPagerAdapter(FragmentManager fm, Context context) {
super(fm);
this.context = context;
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0 :
return GamesListPagerFragment.newInstance(GiantBomb.REPLAYING);
case 1 :
return GamesListPagerFragment.newInstance(GiantBomb.PLANNING);
case 2 :
return GamesListPagerFragment.newInstance(GiantBomb.DROPPED);
case 3 :
return GamesListPagerFragment.newInstance(GiantBomb.PLAYING);
case 4:
return GamesListPagerFragment.newInstance(GiantBomb.COMPLETED);
default:
return GamesListPagerFragment.newInstance(position);
}
}
@Override
public int getCount() {
return PAGE_COUNT;
}
@Override
public CharSequence getPageTitle(int position) {
return pageTitle[position];
}
}
包含 textview 和 recyclereviw 的子 Fragment
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Toaster.make(getContext(),"onActivity");
recyclerView = (RecyclerView) getActivity().findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
realmResult = realm.where(GameListDatabase.class).findAll();
Toaster.make(getContext(),realmResult.size()+"");
GameListAdapter adapter = new GameListAdapter(getContext(),realmResult,true);
recyclerView.setAdapter(adapter);
}
【问题讨论】:
-
为什么你在 switch 语句中使用 return 而不是 break
标签: android android-layout android-fragments android-recyclerview android-viewpager