事情是这样的:
ImageIDs=new Vector <Integer>(5,1);
ImageIDs.add(R.drawable.demo_0);
ImageIDs.add(R.drawable.demo_1);
ImageIDs.add(R.drawable.demo_2);
ImageIDs.add(R.drawable.demo_3);
ImageIDs.add(R.drawable.add_card);
——————————Gallery g1=(Gallery) this.findViewById(R.id.Gallery01);
BaseAdapter ba=new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.i("CurrentPosition", Integer.toString(position));
iv=new ImageView(Sample_5_8.this);
iv.setImageResource(ImageIDs.get(position));
iv.setScaleType(ImageView.ScaleType.FIT_XY);
iv.setLayoutParams(new Gallery.LayoutParams(188, 250));
return iv;
}————————————————————
这样的话,Log.i的输出很让我弄不懂,我把得到的东西写出来:
开始初始化的时候,也就是我还没动这个程序的时候 CurrentPosition 值先后出现 0 、 1
从demo_0 向demo_1 滑动后,CurrentPosition值是2
从demo_1 向demo_2 滑动后,CurrentPosition值是3
从demo_2 向demo_3 滑动后,CurrentPosition值是4
从demo_3 向add_card滑动后,CurrentPosition 没有值, 这是为什么???还有,我再从add_card向回滑动:
从add_card向demo_3 滑动后,CurrentPosition值是2 这是为什么? add_card是第5张图啊??
从demo_3 向demo_2 滑动后,CurrentPosition值是1
从demo_2 向demo_1 滑动后,CurrentPosition值是0
从demo_1向demo_0滑动后, CurrentPosition 又是没有值 ,这是为哈? 这个position是什么个内容?API文档看了不懂,渴望更深切的解释,还有getView() 到底是干什么用?具体讲些请,我现在糊涂了有些
ImageIDs=new Vector <Integer>(5,1);
ImageIDs.add(R.drawable.demo_0);
ImageIDs.add(R.drawable.demo_1);
ImageIDs.add(R.drawable.demo_2);
ImageIDs.add(R.drawable.demo_3);
ImageIDs.add(R.drawable.add_card);
——————————Gallery g1=(Gallery) this.findViewById(R.id.Gallery01);
BaseAdapter ba=new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
Log.i("CurrentPosition", Integer.toString(position));
iv=new ImageView(Sample_5_8.this);
iv.setImageResource(ImageIDs.get(position));
iv.setScaleType(ImageView.ScaleType.FIT_XY);
iv.setLayoutParams(new Gallery.LayoutParams(188, 250));
return iv;
}————————————————————
这样的话,Log.i的输出很让我弄不懂,我把得到的东西写出来:
开始初始化的时候,也就是我还没动这个程序的时候 CurrentPosition 值先后出现 0 、 1
从demo_0 向demo_1 滑动后,CurrentPosition值是2
从demo_1 向demo_2 滑动后,CurrentPosition值是3
从demo_2 向demo_3 滑动后,CurrentPosition值是4
从demo_3 向add_card滑动后,CurrentPosition 没有值, 这是为什么???还有,我再从add_card向回滑动:
从add_card向demo_3 滑动后,CurrentPosition值是2 这是为什么? add_card是第5张图啊??
从demo_3 向demo_2 滑动后,CurrentPosition值是1
从demo_2 向demo_1 滑动后,CurrentPosition值是0
从demo_1向demo_0滑动后, CurrentPosition 又是没有值 ,这是为哈? 这个position是什么个内容?API文档看了不懂,渴望更深切的解释,还有getView() 到底是干什么用?具体讲些请,我现在糊涂了有些
iv.setImageResource(ImageIDs.get(position));
就会有问题。你自己心里有一种先入为主的东西,扰乱了你的思维。
当你在滚动屏幕的时候,并不是说你只滚了一行,就只会有一次调用getView,实际上可能出现多次调用getView的(系统完全有可能多生成几行View,以便在摸动的时候,达到平滑不滞后的效果)。
总之,position绝对是一个合法的值,但你不要想当然的认为,某次getView,一定会传一个position等于多少值的给你,不一定。因为getView是回调用的,什么时候创建是由系统决定的(它很可能会提早创建,原因前面我说过了)。另外,你的代码效率上有问题:
比如滚屏造成有一行出了屏,有一行新的入了屏,那么,系统会将出了屏的View做为参数(注意getView的第二个参数)调用getView,期望你将出屏的View改造成入屏的View(这只需要更新一下界面显示即可,不需要再new View,这就是我在前面某一贴里面跟你说的了——优化),你每次都new,是很不负责的。
当然,上面只优化策略的一种,不排除还有其它策略,这要看google怎么设计的了。