如何理解BaseAdapter.getVeiw()参数convertView的null与非null
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
是什么?如何理解这里面的条件语句?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
简单来说,是为了复用,避免每次从layout资源文件生成新的视图(或者是通过代码生成新的视图)。
比如像
ListView
或者GridView
,屏幕上若能显N个条目,那么getView
就被调用N次,以提供对应位置的视图。而复用之前已经生成的视图,可以提高效率。android.widget.Adapter源码文件中getView()方法的参数说明:
但你仍需要检查它是否为空,以及类型是否适当。
这个是为了避免创建重复的对象。是为了更好的重用
getView通过适配器创建view对象填充listview等,判断converview有没有缓存到,如果缓存了,就不用创建新的view,可以达到复用的目的。现在一般getview这个方法不这样写,还有更高效的写法,太久没写安卓了