Android ViewPagerIndicator不平滑,有1000页
现在我有了一个Android ViewPagerIndicator不平滑,有1000页,android,android-viewpager,viewpagerindicator,Android,Android Viewpager,Viewpagerindicator,现在我有了一个ViewPager和ViewPagerIndicator来在Android上为我的屏幕分页 我覆盖FragmentStatePagerAdapter中的getCount(),并返回1000以获得1000页。我需要做一些代码来获取基于日历(dd/MM/yyyy)的页面标题。每当我滚动时,我都会看到所有1000页的标题都被重建(我在Adapter#getPageTitle(int)处打印日志) 这使我的寻呼机滚动非常慢,不再平滑 我认为当我滚动1页时,ViewPagerIndicato
ViewPager
和ViewPagerIndicator
来在Android上为我的屏幕分页
我覆盖FragmentStatePagerAdapter
中的getCount()
,并返回1000以获得1000页。我需要做一些代码来获取基于日历(dd/MM/yyyy)的页面标题。每当我滚动时,我都会看到所有1000页的标题都被重建(我在Adapter#getPageTitle(int)处打印日志)
这使我的寻呼机滚动非常慢,不再平滑
我认为当我滚动1页时,ViewPagerIndicator不应该重建所有页面标题
更新:添加适配器的源代码
public class ResultAdapter extends FragmentStatePagerAdapter {
public ResultAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 1000;
}
@Override
public Fragment getItem(int position) {
Log.d("xskt", "Adapter.GetItem.position=" + position);
Calendar calendar = Utilities.selectedProvince.getLastDay(Utilities.selectedCalendar, Utilities.pagerSize - position - 1);
ResultView resultView = new ResultView(Utilities.selectedProvince, calendar);
resultView.setTitle(calendar.get(Calendar.DAY_OF_MONTH) + "/" + (calendar.get(Calendar.MONTH) + 1));
return resultView;
}
@Override
public CharSequence getPageTitle(int position) {
// Calendar calendar;
//DO SOME CALCULATE WITH CALENDAR
// String title = calendar.get(Calendar.DAY_OF_MONTH) + "/" + (calendar.get(Calendar.MONTH) + 1);
// return title;
Log.d("xskt","get page title");
return ((ResultView) getItem(position)).getTitle();
}
}
我需要同样的东西,这里是我所做的代码,基本上我根据新片段的位置计算要显示的标题 默认情况下,将显示与当前日期相对应的片段,如果位置发生变化,我只需获取当前位置和新位置之间的差异,并相应地修改日期以显示
public class RateFragmentPagerAdapter extends FragmentStatePagerAdapter{
private final int todayPosition;
private RateFragment currentFragment;
private final Calendar todayDate;
/** Constructor of the class */
public RateFragmentPagerAdapter(FragmentManager fm, int today_position, Calendar today_date) {
super(fm);
todayPosition = today_position;
todayDate = (Calendar) today_date.clone();
}
/** This method will be invoked when a page is requested to create */
@Override
public Fragment getItem(int arg0) {
currentFragment = new RateFragment();
Bundle data = new Bundle();
data.putInt("current_page", arg0);
currentFragment.setArguments(data);
return currentFragment;
}
/** Returns the number of pages */
@Override
public int getCount() {
return RateDayApplication.numberOfDays;
}
@Override
public CharSequence getPageTitle(int position) {
Calendar newDate = (Calendar) todayDate.clone();
int diffDays = position - todayPosition;
newDate.add(Calendar.DATE, diffDays);
return RateDayApplication.dateTitleFormat.format(newDate.getTime());
}
}
它很快,因为我从不调用片段对象,我只是比较函数中的当前位置(final)和新位置。您添加的用于生成调用的页面标题的代码在哪里?(调试并查看堆栈跟踪,或者从何处调用该函数?)您还应该发布适配器代码。我已经更新了上面的源代码。我尝试将标题设置为fragment,然后调用getTitle()检索它,但没有任何更改。只有1000页?这还不够@Nguyenminhinh嗨!能给我确切的密码吗?你已经实现了。我想要我的viewpagerindicator标题作为日期!请帮我解决这个问题。谢谢你,谢谢。我稍后会对此进行测试。@Yoann Hercouet我想知道RateDayApplication中有什么,或者如何在GetPageTitle返回日期我更改了代码,但我使用这个类在整个应用程序中保留了一些常量变量。getPageTitle是针对我的需要而设计的,这取决于你的想法。