Zastanawiałem się, czy to normalne zachowanie viewpager
i jego adapter, aby zawsze wywoływać metodę getItem()
dla indeksu 0 i 1, nawet jeśli natychmiast ustawię aktualną pozycję.ViewPager Adapter getItem zawsze wołał o indeks 0 i 1
Oto mój kod:
mNewsPagerAdapter = new NewsDetailPagerAdapter(getChildFragmentManager());
mNewsPagerAdapter.updateNewsList(news);
mViewPager = (ViewPager) mView.findViewById(R.id.horizontal_view_pager);
mViewPager.setPageMargin(2);
mViewPager.setPageMarginDrawable(R.color.black);
mViewPager.setAdapter(mNewsPagerAdapter);
mViewPager.setCurrentItem(mCurrentPositionPager, false);
Gdybym przejść z mojej działalności głównej do mojej działalności szczegółowo z tym viewpager
, adapter zawsze wywołuje metodę getItem()
do pozycji 0 i 1, a po tej metodzie getItem()
dla pozycja mOriginalPosition
i jej sąsiadów. Zastanawiałem się, czy to jest prawidłowe zachowanie, czy też przeoczyłem coś, aby wdrożyć je we właściwy sposób. Dzięki za pomoc :)
Edycja: Dodano mój kod adapter
public class NewsDetailPagerAdapter extends FragmentStatePagerAdapter {
private SparseArray<Fragment> mPageReferenceMap = new SparseArray<Fragment>();
private ArrayList<News> mNewsList;
public NewsDetailPagerAdapter(FragmentManager fm) {
super(fm);
}
/**
* Setzt die neuen News.
**/
public void updateNewsList(ArrayList<News> list) {
mNewsList = list;
}
@Override
public Fragment getItem(int position) {
Log.d("debug", "getItem position:" + position);
News newsItem = mNewsList.get(position);
NavigationFragment fragment = new NavigationFragment();
mPageReferenceMap.put(position, fragment);
return fragment;
}
@Override
public int getCount() {
return mNewsList.size();
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
public Fragment getFragment(int position) {
return mPageReferenceMap.get(position);
}
}
jaką wartość chcesz odzyskać dzięki metodzie getcount firmy Newspageradapert – koutuk
@jennymo Jaką pozycję ustawiasz? – forcewill
dodaj swój kod adaptera –