Изменение pagetitle в 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();
}
теперь я хотел бы обновить заголовки страниц предыдущего и следующего фрагментов. Я хочу назвать их "предыдущими"и " следующими". И он также должен динамически обновляться на последующих страницах.
Я могу получить текущий номер заголовка страницы. Например, когда я просматриваю 5-й фрагмент, текущий фрагмент покажет название правильно. И в обоих углах ViewPager он показывает предыдущий номер заголовка страницы слева и следующий номер заголовка страницы справа. Теперь я хочу иметь заголовки страниц как " предыдущий "слева и" следующий " справа, подобно приложению Gmail и как он показывает количество почты в ViewPager.
главное, что я хочу знать, как я могу получить доступ/изменить данные заголовка страницы следующих / предыдущих фрагментов из текущего фрагмента, как они делать в приложении Gmail?
1 ответов
Я основал это на образцах, которые поставляются с ViewPagerIndicator
.
вы в основном слушаете, когда страница изменяется, и говорите адаптеру отображать другой заголовок страницы в зависимости от текущей позиции.
если у вас есть эти образцы, и вы просто замените эти два файла, попробуйте образцы заголовков->по умолчанию, и это отлично работает для меня...
изменить код 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
}