ListView的属性及方法详解
近期在重新学习Android控件知识,目前进行到ListView,感觉这是一块尤其难啃的硬骨头:最为常用、用法较复杂、涉及的其他Android知识也较多。因此决定系统地好好复习一遍ListView。
一、ListView类的继承关系
可以看出,ListView并不直接继承于View,而是直接继承于抽象类AbsListView.
ListView的直接子类有:ExpandableListView.
二、ListView概述
ListView是一个用来纵向显示条目的视图,这些条目内容来自于与该ListView相关联的ListAdapter.
三、嵌套类
classListView.FixedViewInfo//用来在列表内展现一个固定位置视图,如在列表顶端的header和在列表底端的footer
四、XML属性
1.ListView的XML属性
android:divider//在列表条目之间显示的drawable或colorandroid:dividerHeight//用来指定divider的高度android:entries//构成ListView的数组资源的引用。对于某些固定的资源,这个属性提供了比在程序中添加资源更加简便的方式android:footerDividersEnabled//当设为false时,ListView将不会在各个footer之间绘制divider.默认为true。android:headerDividersEnabled//当设为false时,ListView将不会在各个header之间绘制divider.默认为true。
2.继承自AbsListView的XML属性
android:cacheColorHint//表明这个列表的背景始终以单一、固定的颜色绘制,可以优化绘制过程。android:choiceMode//为视图指定选择的行为。可选的类型有:none、singleChoice、multipleChoice、multipleChoiceModal。android:drawSelectorOnTop//若设为true,选择器将绘制在选中条目的上层。默认为false。android:fastScrollEnabled//设置是否允许使用快速滚动滑块。android:listSelector//设置选中项显示的可绘制对象,可以是图片或者颜色属性。android:scrollingCache//设置在滚动时是否使用绘制缓存。若设为true,则将使滚动表现更快速,但会占用更内存。默认为true。android:smoothScrollbar//为真时,列表会使用更精确的基于条目在屏幕上的可见像素高度的计算方法。默认该属性为真,如果你的适配器需要绘制可变高的条目,他应该设为假。当该属性为真时,你在适配器在显示变高条目时,滚动条的把手会在滚动的过程中改变大小。当设为假时,列表只使用适配器中的条目数和屏幕上的可见条目来决定滚动条的属性。android:stackFromBottom//设置GridView和ListView是否将内容从底部开始显示。android:textFilterEnabled//当设为真时,列表会将结果过滤为用户类型。前提是这个列表的Adapter必须支持Filterable接口。android:transcriptMode//设置列表的transcriptMode.有如下选项可选://(1)disabled禁用TranscriptMode,也是默认值;//(2)normal当新条目添加进列表中并且已经准备好显示的时候,列表会自动滑动到底部以显示最新条目;//(3)alwaysScroll列表会自动滑动到底部,无论新条目是否已经准备好显示.
3.继承自ViewGroup的XML属性
android:addStatesFromChildren//设置这个ViewGroup的drawable状态是否包括子View的状态。若设为true,当子View如EditText或Button获得焦点时,整个ViewGroup也会获得焦点。android:alwaysDrawnWithCache//设置ViewGroup在绘制子View时是否一直使用绘图缓存。默认为true。android:animationCache//设置布局在绘制动画效果时是否为其子View创建绘图缓存。若设为true,将会消耗更多的内存,要求持续时间更久的初始化过程,但表现更好。默认为true。android:clipChildren//设置子View是否受限于在自己的边界内绘制。若设为false,当子View所占用的空间大于边界时可以绘制在边界外。默认为true。android:clipToPadding//定义布局间是否有间距。默认为true。android:descendantFocusability//定义当寻找一个焦点View的时候,ViewGroup与其子View之间的关系。可选项为://(1)beforeDescendantsViewGroup会比其子View更先获得焦点;//(2)afterDescendants只有当无子View想要获取焦点时,ViewGroup才会获取焦点;//(3)blockDescendantsViewGroup会阻止子View获取焦点android:layoutAnimation//定义当ViewGroup第一次展开时的动画效果,也可人为地在第一次展开后调用。android:persistentDrawingCache//定义绘图缓存的持久性。有如下可选项://(1)none当使用过后不保留绘图缓存//(2)animation在layoutanimation之后保留绘图缓存//(3)scrolling在Scroll操作后保留绘图缓存//(4)allalways保留绘图缓存
4.继承自View的XML属性
太多了………………饶过我吧
五、常用public方法
1.add/remove 方法
voidaddFooterView(Viewv)//增加一个固定在列表底部的View,参数v为欲添加的视图voidaddFooterView(Viewv,Objectdata,booleanisSelectable)//增加一个固定在列表底部的View,参数v为欲添加的视图,data为与View绑定的数据,isSelectable设置是否可选voidaddHeaderView(Viewv)//增加一个固定在列表顶部的View,参数v为欲添加的视图voidaddHeaderView(Viewv,Objectdata,booleanisSelectable)//增加一个固定在列表顶部的View,参数v为欲添加的视图,data为与View绑定的数据,isSelectable设置是否可选booleanremoveFooterView(Viewv)//去除一个之前添加的FooterView,参数v为欲删除的视图,若成功删除则返回truebooleanremoveHeaderView(Viewv)//去除一个之前添加的HeaderView,参数v为欲删除的视图,若成功删除则返回true
2.响应事件方法
booleanOnKeyDown(intkeyCode,KeyEventevent)//当按下键时响应booleanOnKeyMultiple(intkeyCode,intrepeatCount,KeyEventevent)//重复按下键时响应,repeatCount为按下次数booleanOnKeyUp(intkeyCode,KeyEventevent)//当键被释放时响应
3.get方法
ListAdaptergetAdapter()//返回ListView正在使用的AdapterDrawablegetDivider()//以Drawable形式返回dividerintgetDividerHeight()//这个……真不想解释了intgetFooterViewCount()//返回FooterView的个数,若无返回0intgetHeaderViewCount()//返回HeaderView的个数,若无返回0booleangetItemsCanFocus()//返回是否有可获得焦点的条目intgetMaxScrollAmount()//Themaximumamountalistviewwillscrollinresponsetoanarrowevent.(求翻译)DrawablegetOverscrollFooter()//返回绘制在所有条目之下的drawableDrawablegetOverscrollHeader()//返回绘制在所有条目之上的drawable
4.set方法
voidsetAdapter(ListAdapteradapter)//为ListView绑定AdaptervoidsetCacheColorHint(intcolor)//参数为0时,将CacheColor设为透明;参数非零时,指定一种颜色作为ListView的背景voidsetDivider(Drawabledivider)//为ListView中每个条目之间设定一个DividervoidsetDividerHeight(intheight)//设定Divider的高度,单位为pixelvoidsetFooterDividerEnabled(booleanfootDividerEnabled)//设置FooterView之间的Dividers是否可用voidsetHeaderDividerEnabled(booleanheadDividerEnabled)//设置HeaderView之间的Dividers是否可用voidsetItemsCanFocus(booleanitemsCanFocus)//设置是否包含可获取焦点的ItemvoidsetOverscrollFooter(Drawablefooter)//设置一个当滚动时或ListView未填满屏幕时能显示在ListView下方的DrawablevoidsetOverscrollHeader(Drawableheader)//设置一个当滚动时能显示在ListView上方的DrawablevoidsetRemoteViewAdapter(Intentintent)//为此AbsListView设置一个通过intent连接到RemoteViewsService而提供的远程视图适配器voidsetSelection(intposition)//设置被选中的条目。如果参数小于0,则position为0的条目将被选中voidsetSelectionAfterHeaderView()//选中headerView下方的第一条条目
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。