android – ViewPagerIndicator不平滑,有1000页

android – ViewPagerIndicator不平滑,有1000页,第1张

概述现在我有一个ViewPager和ViewPagerIndicator来在 Android上分页我的屏幕. 我从FragmentStatePagerAdapter重写getCount()并返回1000以获得1000页.我需要做一些代码来获取日历上的页面标题(dd / MM / yyyy).每当我滚动时,我都会看到所有1000个页面标题都被重建(我在Adapter#getPageTitle(int)上 现在我有一个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 */@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页所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1124758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存