最近做一个图片浏览器,用BaseAdapter用到想和它分手(其实还好啦,挺好用的,好扩展!),核心应该是getView方法的重写吧,主要有几点收获吧,在这里说说~说说~:
[代码]java代码:
02 |
public View getView( int position, View convertView, ViewGroup parent) |
05 |
Bitmap bitmap = getItem(position); |
07 |
if (convertView == null ) |
09 |
imageView = new ImageView(getContext()); |
13 |
imageView = (ImageView) convertView; |
16 |
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); |
17 |
imageView.setImageBitmap(bitmap); |
1、when getView 被调用:
①初始化时,肯定会调用的,不然啥都看不见。
②子控件从消失到重新出现,调用~~
③调用notifyDataSetChanged()后,会调用~~
④欢迎补充……
2、getView 方法中 convertView的脾气:
①缓存,不错!可以节省资源(上面的代码有给出)
②缓存,shit!!!一定要搞清楚这个是哪个子控件留下的缓存,从实践的坎坷过程来看,应该是最后一个消失的子控件的,不过不是很确定,但是肯定不是原来这个控件的缓存,如果是的话就不用加 imageView.setImageBitmap(bitmap) 这一句了。也许大家不会因为这个问题而出现什么狗血的事~可是,当你的View是一个自定义的且较为复杂的控件时,就一定要做好恢复工作了~比如重新设置它的图片(这个简单,关键时注意复杂的),我被这个坑了两天……
写完,突然觉得问题有点傻……可能也就只有我被坑过吧