如何填充ViewPagerIndicator?

时间:2013-08-18 16:10:24

标签: android viewpagerindicator

之前我使用过Fragment,所以我有5个片段与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;
        }
    }
}

任何想法或建议?感谢很多

每个标签都是空的,我想用数据填充它(填充它): enter image description here

3 个答案:

答案 0 :(得分:0)

您需要写一个显示所需用户界面的TestFragment

例如,要拥有“包含带有自定义适配器的listview的片段”,您可以TestFragment扩展ListFragment,并使用onActivityCreated()等方法填充适配器。< / p>

答案 1 :(得分:0)

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

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是我发送给每个片段供个人使用的额外内容! 我的TabsAdapter是您自己的GoogleMusicAdapter!相应地改变它!

AddTab方法:

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

答案 2 :(得分:0)

您的项目需要两个课程。

  1. TabsAdapter将扩展FragmentPagerAdapter实现OnPageChangeListener,TabListener
  2. 一个简单的类,它将扩展Fragment。基本上这将包含要加载的片段。
  3. 在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类,并根据您的需要使用overriden方法。 我希望这个小提示对你有所帮助。