gpt4 book ai didi

android - Viewpager Adapter getItem 总是调用索引 0 和 1

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:26 25 4
gpt4 key购买 nike

我只是想知道 viewpager 及其适配器总是为索引 0 和 1 调用 getItem() 方法是否正常,即使我立即设置当前位置。

这是我的代码:

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);

如果我使用此 viewpager 从我的概览 Activity 切换到我的详细 Activity ,适配器总是调用位置 0 和 1 的 getItem() 方法,然后getItem() 方法获取 mOriginalPosition 及其邻居的位置。我想知道这是否是正确的行为,或者我是否错过了以正确方式实现它的一些东西。感谢您的帮助:)

编辑:添加我的适配器代码

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);
}

最佳答案

这很正常(在我看来也很聪明)。ViewPager 类有一个名为 mOffscreenPageLimit 的属性,默认值为 1。此数字决定了 Viewpager 将预加载当前页面左侧和右侧的页面数。例如,您有 10 个页面,当前位置为 5,mOffcreenPageLimit 为 1,则将加载位置 4 和 6 的页面。

您可以通过调用此方法来更改此属性

viewpager. setOffscreenPageLimit(int)

如果传入一个小于1的整数,则没有任何效果。

关于android - Viewpager Adapter getItem 总是调用索引 0 和 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32348828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com