在ViewPager外部更新视图时无法获得正确的位置

时间:2014-11-19 00:41:17

标签: android android-viewpager android-pageradapter

我有简单的PagerAdapter:

public class MyAdapter extends PagerAdapter {
    Context context;
    int[] res;
    LayoutInflater inflater;

    public MyAdapter(Context context, int[] res) {
        this.context = context;
        this.res = res;
    }

    @Override
    public int getCount() {
        return res.length;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {

        ImageView res1;

        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View item = inflater.inflate(R.layout.my_item, container,
                false);
        res1 = (ImageView) item.findViewById(R.id.res1);

        res1.setImageResource(res[position]);
        imageViewWhichIsDefinedOutsideViewPagerItem.setImageResource(res[position]);

        ((ViewPager) container).addView(item);

        return item;
    }
}

问题是我正在设置像这样的ImageView:

res1.setImageResource(res[position]);
imageViewWhichIsDefinedOutsideViewPagerItem.setImageResource(res[position]);

散布到ViewPager的res1具有良好的资源图像,但imageViewWhichIsDefinedOutsideViewPagerItem具有不同的资源。如果我为他们两个设置res [position],那怎么可能呢?为什么会这样?

1 个答案:

答案 0 :(得分:1)

页面实例化时会调用

instantiateItem(),而不会在页面显示时调用。页面在显示之前创建,因此当用户在页面之间滑动时,动画可以是平滑的。

请勿在{{1​​}}中执行任何会影响该单个页面之外的小部件的内容。

如果您想在页面更改时更改instantiateItem(),请set up an OnPageChangedListener并在那里完成工作。