列表视图
上代码
直接run发现没有任何效果
其实ListView还需要给这每一条item填充数据,并且这些item其实也是一种布局
先给这些item进行布局
这里布局也是根据自己需求进行设置,这里我们直接LinearLayout
注:这里我们给个id,字调大一点就行了。有需要的可以再加一个图标,后面加一段文字啥的,按照自己需求来
设置好这俩个布局后,还需设置数据
ListView数据一般都是从网上获取的,并且这些item可能都会有很多数据
所以一般还会创建一个java bean类
这个Bean类里面放文字也好,放图片也好,都可
因为我们这list_item里面只有TextView这一个数据
所以
快捷键alt+ins自动创建Getter和Setter方法
这里我们就给个name,到时候让它显示一下
这样我们的Bean.java也算是完成了
回到MainActivity
因为我们没有从网上获取数据,这里我们直接用一个for循环获取数据
先创建一个List<Bean>数组,把数据都放进去
我们去创建一个BaseAdapter类,就叫MyAdapter (适配器)
alt+enter快捷键实现这些方法
创建好了我们再回到MainActivity中去,把数据放入到Adapter中去
所以我们再回到去MyAdapter中创建一下这些构造方法
alt+ins快捷键创建构造方法
俩个都选中
回去把构造的俩个参数放进去
再去MyAdapter中
这里我们把
方法里它自动给我们创建的形参名改一下,改成下面这样,方便区分
改完形参名别忘了把方法体内的也改一下
我们需要把这个data
也就是之前在这个地方创建的这些值
传到TextView的每一个item上面
注:这些值在正常开发的时候可能都是从网上获取的
在MyAdapter中再设置一下
run一下看看效果
每滑动一下,都会不断地调用getView的方法
每次在显示的时候,都会调用getView去给每一个item进行设值
接下来再设置ListView每个item的点击事件
实际上ListView也给我们提供了监听方法,有点击和长按的
回到MainActivity中去
run一下
虽然可以,但是ListView这样使用并不是最优的解
回到MyAdapter中,我们看到每次getView()在调用的时候,都要findViewById一下
实际上这个findViewById也是非常耗时的,可以进行优化
一般再在MyAdapter中再创建一个ViewHolder类
然后注释掉之前的第17步
然后第18步报错
因为这个时候要通过viewHolder.textView来调用,所以接着上面第32步注释掉后继续
这样我们getVew在每次调用的时候,就节省了findViewById的调用时间
这就是listView的一个优化,平时在使用listView的时候,这个getView也一般会这样使用