【问题标题】:ViewPager with dynamic contents具有动态内容的 ViewPager
【发布时间】:2012-11-05 23:26:58
【问题描述】:

我正在使用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);
}

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

【问题讨论】:

  • PagerAdapter 是一个接口——您不能根据上面的new PagerAdapter() 调用创建它的实例。

标签: android tabs android-viewpager


【解决方案1】:

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

【讨论】:

  • 仅供参考:FragmentPagerAdapter 是 PagerAdapter 的子类。 PagerAdapter 是一个抽象类,可帮助管理要在 ViewPager 中显示的内容。
猜你喜欢
  • 1970-01-01
  • 2014-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
  • 2014-03-06
  • 1970-01-01
  • 2014-02-14
相关资源
最近更新 更多