0

我正在使用此处建议的方法,以便使用 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);
}

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

4

1 回答 1

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 因为它有一个索引并且我对它很满意,您可以根据需要使用任何索引列表类型。

于 2012-11-12T07:35:45.077 回答