2

我之前使用过 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;
        }
    }
}

有什么想法或建议吗??多谢

每个选项卡都是空的,我想用数据填充它(填充它): 在此处输入图像描述

4

3 回答 3

0

你需要写一个TestFragment显示你想要的 UI。

例如,要拥有“包含带有自定义适配器的列表视图的片段”,您可以使用TestFragmentextendListFragment并以类似的方法填充适配器onActivityCreated()

于 2013-08-18T16:22:46.680 回答
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 是我发送给每个 Fragment 供个人使用的额外内容!我的 TabsAdapter 是您自己的 GoogleMusicAdapter!相应地改变它!

AddTab 方法:

public void addTab(ActionBar.Tab tab,Class<?> clss,Bundle args)
于 2013-08-18T16:40:48.287 回答
0

您的项目中需要两个类。

  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 类,并根据您的需要使用覆盖的方法。我希望这个小提示对你有所帮助。

于 2013-08-18T18:04:34.767 回答