aya*_*nha 3 android android-fragments fragmentpageradapter
我无法为每个选项卡创建动态布局,我可以通过此构造函数动态创建选项卡(公共MyPagerAdapter(FragmentManager fm,int noOfTabs)),但是不要为每个应创建的每个片段创建每个选项卡的视图. dyanmic.
public class MyPagerAdapter extends FragmentPagerAdapter
{
private final String[] TITLES = { "Categories", "Home", "Top Paid", "Top Free", "Top Grossing", "Top New Paid",
"Top New Free", "Trending" };
int noOfTabs;
**public MyPagerAdapter(FragmentManager fm , int noOfTabs)
{
super(fm);
this.noOfTabs = noOfTabs;
}**
/*public MyPagerAdapter(FragmentManager fm)
{
super(fm);
}*/
@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}
@Override
public int getCount() {
return noOfTabs; //TITLES.length;
}
@Override
public Fragment getItem(int position) {
return SuperAwesomeCardFragment.newInstance(position);
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里面临的问题应该是动态的而不是静态的三个片段(FragmentA,FragmentB,FragmentC),它可以是任意数量的片段,具体取决于int noOfTabs:
@Override
public Fragment getItem(int position) {
Fragment fragment =null;
switch (position) {
case 0:
fragment = new FragmentA();
break;
case 1:
fragment = new FragmentB();
break;
case 2:
fragment = new FragmentC();
break; }
return fragment;
}
Run Code Online (Sandbox Code Playgroud)
如果有人可以帮助我,请提前感谢,因为我在图书馆PagerSlidingTabStrip的帮助下使用它.
您可以通过在以下位置存储所有片段及其标题的列表来执行此操作PagerAdapter:
/**
* TabsPagerAdapter.
*
* @author Niels
* @version 1.0
* @since 11-9-2015
*/
public class TabsPagerAdapter extends FragmentPagerAdapter {
/**
* Contains all the fragments.
*/
private List<Fragment> fragments = new ArrayList<>();
/**
* Contains all the tab titles.
*/
private List<String> tabTitles = new ArrayList<>();
/**
* Creates a new PagerAdapter instance.
*
* @param fragmentManager The FragmentManager.
*/
public TabsPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public CharSequence getPageTitle(int position) {
return tabTitles.get(position);
}
/**
* Adds the fragment to the list, also adds the fragment's tab title.
*
* @param fragment New instance of the Fragment to be associated with this tab.
* @param tabTitle A String containing the tab title for this Fragment.
*/
public void addFragment(Fragment fragment, String tabTitle) {
fragments.add(fragment);
tabTitles.add(tabTitle);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以这样使用:
@Override
public void onCreate() {
adapter = new TabsPagerAdapter(getSupportFragmentManager()); //TabsPagerAdapter = whatever you named the PagerAdapter
addFragments();
viewpager.setAdapter(adapter); //viewpager = ViewPager view instance
strip.setViewPager(viewpager); //strip = PagerSlidingTabStrip view instance
}
/**
* Adds fragments to the adapter.
*/
private void addFragments() {
adapter.addFragment(new Fragment1(), "Fragment1");
adapter.addFragment(new Fragment2(), "Fragment2");
adapter.addFragment(new Fragment3(), "Fragment3");
adapter.addFragment(new Fragment4(), "Fragment4");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6510 次 |
| 最近记录: |