我有简单的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],那怎么可能呢?为什么会这样?
答案 0 :(得分:1)
instantiateItem()
,而不会在页面显示时调用。页面在显示之前创建,因此当用户在页面之间滑动时,动画可以是平滑的。
请勿在{{1}}中执行任何会影响该单个页面之外的小部件的内容。
如果您想在页面更改时更改instantiateItem()
,请set up an OnPageChangedListener
并在那里完成工作。