public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageview;
if (convertView==null){
imageview=new ImageView(MyActivity.this);
imageview.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageview.setPadding(5,0,5,0);
}else{
imageview=(ImageView)convertView;
}
imageview.setImageResource(imageId[position]);
return imageview;
}
当一张图片滑进屏幕的时候,调用这个getview()
?那么其中第一个if条件null
是什么?如何理解这里面的条件语句?
简单来说,是为了复用,避免每次从layout资源文件生成新的视图(或者是通过代码生成新的视图)。
比如像
ListView
或者GridView
,屏幕上若能显N个条目,那么getView
就被调用N次,以提供对应位置的视图。而复用之前已经生成的视图,可以提高效率。android.widget.Adapter源码文件中getView()方法的参数说明:
但你仍需要检查它是否为空,以及类型是否适当。
这个是为了避免创建重复的对象。是为了更好的重用
getView通过适配器创建view对象填充listview等,判断converview有没有缓存到,如果缓存了,就不用创建新的view,可以达到复用的目的。现在一般getview这个方法不这样写,还有更高效的写法,太久没写安卓了