[英]FragmentPagerAdapter.getItem (int) shows wrong Fragment
My FragmentPagerAdapter carries the 3 pages of ViewPager.OffScreenPageLimit and always displays the last loaded page 我的FragmentPagerAdapter包含ViewPager.OffScreenPageLimit的3页,并始终显示最后加载的页面
I use ViewPager to display Fragments. 我使用ViewPager显示片段。
my ViewPager 我的ViewPager
private static final int MONTH_SIZE = 12;
viewPager.setAdapter(new CalendarFragmentPagerAdapter(getChildFragmentManager()));
viewPager.setCurrentItem(GregorianCalendar.getInstance().get(Calendar.MONTH));
viewPager.setClickable(true);
viewPager.setSaveEnabled(false);
viewPager.setOffscreenPageLimit(1);
My FragmentPageAdapter: 我的FragmentPageAdapter:
public class CalendarFragmentPagerAdapter extends FragmentPagerAdapter {
/**
* @param fm
*/
public CalendarFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
/**
*/
@Override
public Fragment getItem(int pageRequest) {
return new CalendarFragment(pageRequest);
}
/**
*/
@Override
public int getCount() {
return MONTH_SIZE - 1;
}
/**
*/
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return getString(R.string.monthJanuary);
case 1:
return getString(R.string.monthFebruary);
case 2:
return getString(R.string.monthMarch);
case 3:
return getString(R.string.monthApril);
case 4:
return getString(R.string.monthMay);
case 5:
return getString(R.string.monthJune);
case 6:
return getString(R.string.monthJuly);
case 7:
return getString(R.string.monthAugust);
case 8:
return getString(R.string.monthSeptember);
case 9:
return getString(R.string.monthOctober);
case 10:
return getString(R.string.monthNovember);
case 11:
return getString(R.string.monthDecember);
default:
return "";
}
}
/**
* @hide
*/
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
My Fragment: 我的片段:
// Nothing especial
List<CalendarEntry> events = getEvents(indexByCalendarFragmentPagerAdapter);
listView = (ListView) view.findViewById(R.id.listView_calendar_screen);
listView.setAdapter(new CalendarCustomAdapter(getActivity().getBaseContext(), events));
listView.setClickable(true);
The error is eg displays in the month of May, the events of February 错误例如显示在5月,2月的事件中
Already tried several ways and could not solve the problem, can someone help me? 已经尝试了几种方法并且无法解决问题,有人可以帮助我吗?
simply change this code or function called getCount() to : 只需将以下代码或称为getCount()的函数更改为:
@Override
public int getCount() {
return events.length;
}
I solved with my own PagerAdapter. 我用自己的PagerAdapter解决了。 I used the example code found on the blog Eilfa
我使用了在Eilfa博客上找到的示例代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.