具有动态内容的ViewPager

时间:2012-11-05 23:26:59

标签: android tabs android-viewpager

我使用建议的方法here,以便使用SupportV4库在Android中实现可滑动的标签。为了初始化ViewPager,必须创建一个页面适配器,需要填充一个片段/选项卡列表,每个片段/选项卡与一个活动相关联,如下所示:

/**
 * Initialise ViewPager
 */
private void intialiseViewPager() {
    List<Fragment> fragments = new Vector<Fragment>();
    fragments.add(Fragment.instantiate(this, Tab1Fragment.class.getName()));
    fragments.add(Fragment.instantiate(this, Tab2Fragment.class.getName()));
    fragments.add(Fragment.instantiate(this, Tab3Fragment.class.getName()));
    this.mPagerAdapter  = new PagerAdapter(super.getSupportFragmentManager(), fragments);

    this.mViewPager = (ViewPager)super.findViewById(R.id.viewpager);
    this.mViewPager.setAdapter(this.mPagerAdapter);
    this.mViewPager.setOnPageChangeListener(this);
}

我的问题是:如何使用与任何类无关的选项卡动态填充片段列表。例如,从字符串数组中获取选项卡标题的选项卡列表

1 个答案:

答案 0 :(得分:0)

我在某处读到类名称PagerAdapter不能被使用,因为它被android(或类似的东西)使用,所以我使用类名ViewPagerAdapter ... 将您的寻呼机适配器修改为类似的内容......

public class ViewPagerAdapter extends FragmentPagerAdapter {
    ArrayList<TabInfo> tabs;
    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
        tabs = new ArrayList<tabInfo>();
    }
    @Override
    public Fragment getItem(int i) {
        return tabs.get(i).fragment;
    }
    @Override
    public int getCount() {
        return tabs.size();
    }
    @Override
    public CharSequence getPageTitle(int position) {
        return tabs.get(position).title;
    }
    public class TabInfo {
        public Fragment fragment;
        String title;
    }
    public void addTab(Fragment _fragment, String _title) {
        final TabInfo _tabInfo = new tabInfo();
        _tabInfo.fragment=_fragment;
        _tabInfo.title = _title;
        tabs.add(_pageInfo);
    }

和你的初衷......

private void intialiseViewPager() {
    this.mPagerAdapter  = new ViewPagerAdapter(super.getSupportFragmentManager());
    mPagerAdapter.addTab(Fragment.instantiate(this, Tab1Fragment.class.getName()));
    mPagerAdapter.addTab(Fragment.instantiate(this, Tab2Fragment.class.getName()));
    mPagerAdapter.addTab(Fragment.instantiate(this, Tab3Fragment.class.getName()));
    this.mViewPager = (ViewPager)super.findViewById(R.id.viewpager);
    this.mViewPager.setAdapter(this.mPagerAdapter);
    this.mViewPager.setOnPageChangeListener(this);
}

我使用ArrayList,因为它有索引,我很满意,你可以根据需要使用任何索引列表类型。