ListView控件的使用
在日常生活中,人们经常会使用新闻客户端,淘宝客户端等应用程序。这些应用程序通常会有一个页面能展示多个条目的信息,并且每个条目信息的布局都是一样的。通常要实现这种功能都会想到创建大量相同的布局,但是这种方法并不利于程序的维护和扩展,为此,Android提供了一个ListView控件来解决上述问题。
一.List View以列表的形式展示具体数据内容,并且能够根据数据的长度自适应屏幕显示,以下是ListView的常见属性:
1. cacheColorHint属性,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性android:background="@drawable/bg",不过不要高兴地太早,当你这么做以后,发现背景是变了,但是当你拖动,或者点击list空白位置的时候发现ListItem都变成黑色的了,破坏了整体效果。
如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色,如果你是用图片做背景的话,那也只要将android:cacheColorHint指定为透明(#00000000)就可以了
2. divider属性,该属性作用是每一项之间需要设置一个图片做为间隔,或是去掉item之间的分割线
android:divider="@drawable/list_driver" 其中 @drawable/list_driver 是一个图片资源,如果不想显示分割线则只要设置为android:divider="@drawable/@null" 就可以了
3. fadeScrollbars属性,android:fadeScrollbars="true" 配置ListView布局的时候,设置这个属性为true就可以实现滚动条的自动隐藏和显示。
4. scrollbars属性,作用是隐藏listView的滚动条,
android:scrollbars="none"与setVerticalScrollBarEnabled(true);的效果是一样的,不活动的时候隐藏,活动的时候也隐藏
5.dividerHeight属性:设置分割线高度
6.listSelector属性:设置ListView item选中时的颜色
二.使用ListView时需要注意的问题
1. 在使用ListView的时候,如果把ListView的高设置为wrap_content,它会反复读取多次数据,然后在ListView中把数据显示出来,效率非常低,这时候我们应该把ListView的高设置为match_parent,这样就能很好的解决读取多次再显示数据的问题了
2. ListView并不能直接进行绑定,而是要通过代码。究其原因,因为它在绑定的时候,还需要设置图片等信息。而ListView一般都与TreeView配合使用,它的绑定行为是通过TreeView的点击来引发的
3. Listview中子控件的监听事件需要在adapter的getview方法中编写,而尽量不要在activity里写。如果在需要在getview中要用到viewholder则viewholder的编写方式应与原来常见的编写方式不同。不应出现如下部分内容:
if (view == null) {
...
} else
{
holder = (ViewHolder) view.getTag();
...
}