我从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 */@OverrIDepublic 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 */@OverrIDepublic int getCount() { return RateDayApplication.numberOfDays;}@OverrIDepublic CharSequence getPageTitle(int position) { Calendar newDate = (Calendar) todayDate.clone(); int diffDays = position - todayposition; newDate.add(Calendar.DATE,diffDays); return RateDayApplication.dateTitleFormat.format(newDate.getTime());}
}
它很快,因为我从不调用片段对象,我只是比较当前位置(最终)和函数中的新位置.
总结以上是内存溢出为你收集整理的android – ViewPagerIndicator不平滑,有1000页全部内容,希望文章能够帮你解决android – ViewPagerIndicator不平滑,有1000页所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)