内部にViewPager(フラグメントあり)とTabLayoutがあり、RecyclerViewには最初のアイテムだけが表示され、他のアイテムは表示されません。ここでCardviewのrecyclerviewアイテム内のビューページ
私ViewPagerAdapter
次のとおりです。ここで
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
int tabCount;
public ViewPagerAdapter(FragmentManager fm, int tabCount) {
super(fm);
this.tabCount= tabCount;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
Tab1 tab1 = new Tab1();
return tab1;
case 1:
Tab2 tab2 = new Tab2();
return tab2;
default:
return null;
}
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
return super.instantiateItem(container, position);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public int getCount() {
return tabCount;
}
}
は私TimeSheetAdapter
次のとおりです。
public class TimeSheetAdapter extends RecyclerView.Adapter<TimeSheetAdapter.ViewHolder> {
Context context;
ArrayList<TimeSheet> timeSheetArrayList;
public TimeSheetAdapter(Context context, ArrayList<TimeSheet> timeSheetArrayList) {
this.context = context;
this.timeSheetArrayList = timeSheetArrayList;
}
public class ViewHolder extends RecyclerView.ViewHolder {
TabLayout tabLayout;
ViewPager viewPager;
ViewPagerAdapter viewPagerAdapter;
public ViewHolder(View itemView) {
super(itemView);
tabLayout = (TabLayout) itemView.findViewById(R.id.tabLayout);
viewPager = (ViewPager) itemView.findViewById(R.id.pager);
tabLayout.addTab(tabLayout.newTab().setText("Tab1"));
tabLayout.addTab(tabLayout.newTab().setText("Tab2"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setupWithViewPager(viewPager);
viewPager.setOffscreenPageLimit(2);
tabLayout.setupWithViewPager(viewPager);
}
}
public TimeSheetAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View viewHolder = LayoutInflater.from(parent.getContext()).inflate(R.layout.time_sheet_row, parent, false);
return new TimeSheetAdapter.ViewHolder(viewHolder);
}
@Override
public void onBindViewHolder(TimeSheetAdapter.ViewHolder holder, int position) {
ViewPagerAdapter adapter = new ViewPagerAdapter(((AppCompatActivity) context).getSupportFragmentManager(), holder.tabLayout.getTabCount());
holder. viewPager.setAdapter(adapter);
if (holder.tabLayout != null) {
for (int i = 0; i < holder.tabLayout.getTabCount(); i++) {
TabLayout.Tab tab = holder.tabLayout.getTabAt(i);
if (tab != null)
tab.setText("Tab " + Integer.toString(i + 1));
}
}
holder.viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(holder.tabLayout));
}
@Override
public int getItemCount() {
return timeSheetArrayList.size();
}
}
あなたが何をしたいですか?それはそれがすると思われることをします。 –
@Kingfisher Phuocそれは、最初のカードビューがOKであるだけのカードビュー内の他のビューページの断片を表示していません –