Android ViewPager 动态增减页面

尽量使用 FragmentStatePagerAdapter 。下面只讲到增加页面。

使用List管理标题和页面,ViewPagerIndicator下可能会用到标题。使用List可以更方便控制ViewPager。

private static List<String> TABS_TITLE = new ArrayList<String>();

private static List<Fragment> TABS_INSTANCE = new ArrayList<Fragment>();

TabPageIndicator需要设置OnPageChangeListener,因为切换页面的时候会把各页面上的Listener清除,你需要重建:

indicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageSelected(int position) {
        //do something
    }
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
    @Override
    public void onPageScrollStateChanged(int state) {}
});

如果需要动态增加页面,可以触发下列动作:

activity.get_tabs_title().add(newpos, newname);
activity.get_tabs_instance().add(newpos, NewFragment.newInstance());
activity.update_tabs(newpos);

上述activity是ViewPager所在Activity,里面也包含下列方法:

public void update_tabs(int newpos) {

    adapter.notifyDataSetChanged();
    indicator.notifyDataSetChanged();

    pager.setAdapter(adapter);
    indicator.setViewPager(pager);

    indicator.setCurrentItem(newpos);

}
Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google+ photo

You are commenting using your Google+ account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

w

Connecting to %s