如何理解BaseAdapter.getVeiw()参数convertView的null与非null

发布于 2022-09-01 19:12:30 字数 535 浏览 14 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

孤云独去闲 2022-09-08 19:12:30

简单来说,是为了复用,避免每次从layout资源文件生成新的视图(或者是通过代码生成新的视图)
比如像ListView或者GridView,屏幕上若能显N个条目,那么getView就被调用N次,以提供对应位置的视图。而复用之前已经生成的视图,可以提高效率。

android.widget.Adapter源码文件中getView()方法的参数说明:

@convertView
The old view to reuse, if possible. Note: You should check that this view is non-null and of an appropriate type before using.

但你仍需要检查它是否为空,以及类型是否适当。

绝不放开 2022-09-08 19:12:30

这个是为了避免创建重复的对象。是为了更好的重用

白馒头 2022-09-08 19:12:30

getView通过适配器创建view对象填充listview等,判断converview有没有缓存到,如果缓存了,就不用创建新的view,可以达到复用的目的。现在一般getview这个方法不这样写,还有更高效的写法,太久没写安卓了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文