ListView是我们在使用手机过程中最常用到的一个功能,就是滑动屏幕,将屏幕之外的信息加载出来,接下来我没问来看一下具体的使用
适配器这里要传入三个参数,一个是当前上下文MainActivity.this,一个是ListView的默认子项布局Idandroid.R.layout.simple_list_item_1,最后一个就是我们需要适配的数据data
最后一步就是将数据显示到界面上了,这里我们只需要用listView对象去调用setAdapter()方法就行了
总而言之,ListView就是将数据通过适配器这个桥梁展示到界面上的一个可滑动控件
接下来我们来看更复杂一点的,因为只能显示一段文本的界面太单调了
我们现在要实现每一行都显示图片+文字的ListView
这里我们定义了一个图片的Id和水果名字
接下来我们的新定义的界面的单独每一行,都是一个子项布局,所以我们要自定义一个子项布局
子项布局 可以看到这个布局只是提供了一个用于展示的框架,并没有直接的展示数据
自然主布局还是只有一个ListView,数据类型都准备好了,接下来我们要面对最复杂的就是自定义适配器,因为我们没有一个直接的适配器能实现我们需要的效果
适配器也做好了,最后我们就要在主活动将数据导入适配器了
数据适配传入ListVIew
运行效果图
提高ListView运行效率
这里提升效率主要从两个方面去做
1.屏幕每次加载的数据可以储存起来,下次加载就会更加快速
在getView中有个参数View convertView就是来存储加载过的数据的
image.png
我们通过一个if判断,若是空就重新加载获取,非空就直接读取
2.图片id和名字的初始化,每次都会获取控件的实例,但是有的我们已经加载过了,在获取就没有意义
这里我们定义个一个内部类Holder(持有者)对控件实例进行缓存,当convertView为空时,创建Holder对象,将控件的实例都存在holder中,再调用setTag
方法,将holder对象存在view中,如果不为空直接取出来
image.png
网友评论