【问题标题】:How to populate ViewPagerIndicator?如何填充 ViewPagerIndicator?
【发布时间】:2013-08-19 02:04:34
【问题描述】:

我之前使用过 Fragment,所以我有 5 个 Fragment 对应于 ViewPagerIndicator 中的 5 个选项卡,但是如何填充每个选项卡?这是我拥有的片段的示例:

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        viewta = inflater.inflate(R.layout.agridviewxml, container, false);
}

这就是我的 ViewPagerIndicator 的工作原理:

private static final String[] CONTENT = new String[] { "Samsung", "HTC",
            "LG", "Sony", "Search" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.simple_tabs);

        FragmentPagerAdapter adapter = new GoogleMusicAdapter(
                getSupportFragmentManager());

        ViewPager pager = (ViewPager) findViewById(R.id.pager);
        pager.setAdapter(adapter);

        TabPageIndicator indicator = (TabPageIndicator) findViewById(R.id.indicator);
        indicator.setViewPager(pager);
    }

    class GoogleMusicAdapter extends FragmentPagerAdapter {
        public GoogleMusicAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            return TestFragment.newInstance(CONTENT[position % CONTENT.length]);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return CONTENT[position % CONTENT.length].toUpperCase();
        }

        @Override
        public int getCount() {
            return CONTENT.length;
        }
    }
}

有什么想法或建议吗?非常感谢

每个选项卡都是空的,我想用数据填充它(填充它):

【问题讨论】:

标签: android viewpagerindicator


【解决方案1】:

您需要编写一个 TestFragment 来显示您想要的 UI。

例如,要拥有“包含带有自定义适配器的列表视图的片段”,您可以让TestFragment 扩展ListFragment,并以onActivityCreated() 之类的方法填充适配器。

【讨论】:

  • 我已经有 5 个片段。但是如何在不编写 TestFragment 的情况下将每个选项卡与片段连接起来
  • @KingOmar:“我已经有 5 个片段”——不是根据您问题中的代码。 “但是如何在不编写 TestFragment 的情况下将每个选项卡与片段连接起来”——用其他方法替换 FragmentPagerAdapter 中的 getItem() 方法,例如根据位置返回正确片段的 switch。跨度>
  • 谢谢!该代码有效: switch (position) { case 0: return new SamsungLB();案例1:返回新的HTCLB();案例2:返回新的LGLB();案例 3:返回新的 SonyLB();案例4:返回新的SearchLB(); }
【解决方案2】:

为了将标签与片段连接起来,请执行以下操作:

mTabsAdapter = new TabsAdapter(this, mViewPager);

    mTabsAdapter.addTab(bar.newTab().setText(getString(R.string.monday)),
            Monday.class, packBundle);
    mTabsAdapter.addTab(bar.newTab().setText(getString(R.string.tuesday)),
            Tuesday.class, packBundle);
    mTabsAdapter.addTab(
            bar.newTab().setText(getString(R.string.wednesday)),
            Wednesday.class, packBundle);
    mTabsAdapter.addTab(bar.newTab().setText(getString(R.string.thursday)),
            Thursday.class, packBundle);
    mTabsAdapter.addTab(bar.newTab().setText(getString(R.string.friday)),
            Friday.class, packBundle);

bar 是我的操作栏,Monday.class 等是我的片段。最后的 packBundle 是我发送到每个 Fragment 供个人使用的额外内容! 我的 TabsAdapter 是您自己的 GoogleMusicAdapter!相应地改变它!

AddTab 方法:

public void addTab(ActionBar.Tab tab,Class<?> clss,Bundle args)

【讨论】:

    【解决方案3】:

    您的项目中需要两个类。

    1. 将扩展 FragmentPagerAdapter 的 TabsAdapter 实现 OnPageChangeListener、TabListener
    2. 将扩展 Fragment 的简单类。基本上这将包含要加载的片段。

    在 TabsAdapter 类中,您需要传递所有数据,例如您需要加载的所有类和选项卡的标题,例如

    public TabsAdapter(SherlockFragmentActivity fa, ViewPager vPager) {
        // TODO Auto-generated constructor stub
        super(fa.getSupportFragmentManager());
        context=fa;
        ab=fa.getSupportActionBar();
        mvPager=vPager;
        mvPager.setAdapter(this);
        mvPager.setOnPageChangeListener(this);
    
    
    }
    

    向您的 TabsAdapter 类添加另一个方法,该方法将向您的 ViewPager 添加选项卡

     public void addTab(ActionBar.Tab tab,Class<?> clss,Bundle args){
         TabInfo info=new TabInfo(clss, args);
        tab.setTag(info);
        tab.setTabListener(this);
        mtabs.add(info);
        ab.addTab(tab);
        notifyDataSetChanged();
    }
    

    并从活动中传递值,例如:

        adap=new TabsAdapter(this,vPager);
        adap.addTab(ab.newTab().setText("title of tab"), Fragment_1.class,null);
        vPager.setAdapter(adap);
    

    现在相应地自定义您的 tabsadapter 类,并根据您的需要使用覆盖的方法。 希望这个小提示对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      • 2012-02-15
      • 2013-04-16
      • 1970-01-01
      • 2012-06-26
      • 2020-01-30
      • 1970-01-01
      相关资源
      最近更新 更多