在Android Viewpager中更改页面标题

我有一个ViewPager ,我正在使用getPageTitle方法来获取当前页面的标题。

这里是适配器代码:

  @Override public Fragment getItem(int i) { details = productData.get(i); Fragment fragment = new ProductViewFragment(); Bundle args = new Bundle(); args.putInt(ProductViewFragment.ARG_SECTION_NUMBER, i + 1); fragment.setArguments(args); return fragment; } @Override public int getCount() { return productData.size(); } public CharSequence getPageTitle(int position) { return (position+1)+" of "+myData.size(); } 

现在我想更新上一​​个和下一个片段的页面标题。 我想把它们命名为“上一个”和“下一个”。 而且它应该在后续页面上dynamic更新。

我能够获得当前页面的标题号码。 例如,当我查看第五个片段时,当前片段将正确显示标题。 在ViewPager的两个angular落,它在左边和下一个页面标题号码的右边显示了前一页的标题号码。 现在,我希望页面标题的左侧是“前一个”,右侧是“下一个”,类似于Gmail应用程序,以及它如何在ViewPager中显示邮件数量。

我想知道的主要是如何像在Gmail应用程序中那样从当前片段访问/修改下一个/上一个片段的页面标题数据?

Solutions Collecting From Web of "在Android Viewpager中更改页面标题"

我基于ViewPagerIndicator附带的ViewPagerIndicator

你基本上听听页面何时改变,并告诉适配器根据当前位置显示不同的页面标题。

如果你有这些样品的工作,你只是replace这两个文件,然后尝试示例标题 – >默认,它对我来说工作正常…

改变了TestFragmentAdapter的代码,如下所示:

 package com.viewpagerindicator.sample; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import com.viewpagerindicator.IconPagerAdapter; class TestFragmentAdapter extends FragmentPagerAdapter implements IconPagerAdapter { protected static final String[] CONTENT = new String[] { "This", "Is", "A", "Test", }; protected static final int[] ICONS = new int[] { R.drawable.perm_group_calendar, R.drawable.perm_group_camera, R.drawable.perm_group_device_alarms, R.drawable.perm_group_location }; private int mCount = CONTENT.length; // CHANGE STARTS HERE private int current_position=0; public void set_current_position(int i) { current_position = i; } // CHANGE ENDS HERE public TestFragmentAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return TestFragment.newInstance(CONTENT[position % CONTENT.length]); } @Override public int getCount() { return mCount; } @Override public CharSequence getPageTitle(int position) { // CHANGE STARTS HERE if (position == current_position-1) { return "Previous"; } else if (position == current_position+1) { return "Next"; } // CHANGE ENDS HERE return TestFragmentAdapter.CONTENT[position % CONTENT.length]; } @Override public int getIconResId(int index) { return ICONS[index % ICONS.length]; } public void setCount(int count) { if (count > 0 && count <= 10) { mCount = count; notifyDataSetChanged(); } } } 

SampleTitlesDefault的代码看起来像这样(添加了OnPageChangeListener)

 package com.viewpagerindicator.sample; import android.os.Bundle; import android.support.v4.view.ViewPager; import com.viewpagerindicator.TitlePageIndicator; // CHANGE ADDED implements.... HERE public class SampleTitlesDefault extends BaseSampleActivity implements ViewPager.OnPageChangeListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_titles); mAdapter = new TestFragmentAdapter(getSupportFragmentManager()); mPager = (ViewPager)findViewById(R.id.pager); mPager.setAdapter(mAdapter); mIndicator = (TitlePageIndicator)findViewById(R.id.indicator); mIndicator.setViewPager(mPager); // CHANGE STARTS HERE mIndicator.setOnPageChangeListener(this); // CHANGE ENDS HERE } // CHANGE STARTS HERE @Override public void onPageScrolled(int i, float v, int i1) { } @Override public void onPageSelected(int i) { mPager = (ViewPager)findViewById(R.id.pager); ((TestFragmentAdapter)mPager.getAdapter()).set_current_position(i); } @Override public void onPageScrollStateChanged(int i) { } // CHANGE ENDS HERE }