Android API 25 (Android 7.1.1 API)
ListView
public class ListView
extends AbsListView
Added in API level 1
java.lang.Object
↳android.widget.AdapterView<android.widget.ListAdapter>
↳android.widget.ListView
已知直接子类:
ExpandableListView
【概述】
在垂直滚动列表中显示项目的视图。项目来自与此视图相关联的ListAdapter。
请参阅ListView指南。
【嵌套类】
类ListView.FixedViewInfo
表示列表中固定视图的类,例如顶部的标题或底部的页脚。
【XML属性】
android: divider
API 1
关联方法:setDivider(Drawable divider)
属性说明:设置List项目之间用某个图形或颜色来做为分隔符。
可以引用另一个资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
可以是颜色值(color),格式”#rgb”、”#argb”、”#rrggbb”、”#aarrggbb”。
对应的全局属性资源符号是divider。
android: dividerHeight
API 1
关联方法:setDividerHeight(int height)
属性说明:设置分隔符的高度。
必须是带单位的浮点型尺寸值(float),如:”14.5sp”。有效的单位包括:px(像素)、dp(密度无关像素)、sp(通常用于字体尺寸的可伸缩像素)、in(英寸)、mm(毫米)。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局属性资源符号是dividerHeight。
android: entries
API 1
属性说明:引用将填充ListView的数组资源。 对于静态内容,这比以编程方式填充ListView更简单。
必须引用另一个资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局属性资源符号是entries。
android: footerDividersEnabled
API 1
关联方法:setFooterDividersEnabled (boolean footerDividersEnabled)
属性说明:页脚前是否画分隔符。
当设置为false时,此ListView将不会在页脚视图之前绘制分隔符。默认为true。
必须是布尔值(boolean),“true”或“false”。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局属性资源符号是footerDividersEnabled。
android: headerDividersEnabled
API 1
关联方法:setHeaderDividersEnabled (boolean headerDividersEnabled)
属性说明:页眉后是否画分隔符。
当设置为false时,此ListView将不会在页眉视图之后绘制分隔符。默认为true。
必须是布尔值(boolean),“true”或“false”。
也可以引用一个包含此类型值的资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name)。
对应的全局属性资源符号是headererDividersEnabled。
【继承自widget.AbsListView的XML属性】
【继承自view.ViewGroup的XML属性】
【继承自view.View的XML的属性】
【公共构造函数】
ListView(Context context)
ListView(Context context, AttributeSet attrs)
ListView(Context context, AttributeSet attrs, int defStyleAttr)
ListView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
【公共方法】
addFooterView
void addFooterView (View v)
void addFooterView (View v, Object data, boolean isSelectable)
添加固定视图以显示在列表的底部。如果addFooterView被多次调用,则视图将按照添加的顺序显示。加入的视图可取得焦点。
注意:第一次引入时,只能在setAdapter(ListAdapter)之前调用此方法。Android 4.4以后,可以随时调用此方法。 如果ListView的适配器没有扩展HeaderViewListAdapter,它将被WrapperListAdapter的支持实例包装。
可以利用点击光标来收起有header view和footer view的ListView。
addHeaderView
void addHeaderView (View v)
void addHeaderView (View v, Object data, boolean isSelectable)
添加固定视图以显示在列表的顶部。如果addHeaderView被多次调用,则视图将按照添加的顺序显示。加入的视图可取得焦点。
注意:第一次引入时,只能在setAdapter(ListAdapter)之前调用此方法。Android 4.4以后,可以随时调用此方法。 如果ListView的适配器没有扩展HeaderViewListAdapter,它将被WrapperListAdapter的支持实例包装。
可以利用点击光标来收起有header view和footer view的ListView。
areFooterDividersEnabled
boolean areFooterDividersEnabled ()
API 19
是否启用页脚视图的分隔线绘图。
areHeaderDividersEnabled
boolean areHeaderDividersEnabled ()
API 19
是否启用页眉视图的分隔线绘图。
setFooterDividersEnabled
void setFooterDividersEnabled (boolean footerDividersEnabled)
API 3
启用或禁用页脚视图的分隔线绘图。
setHeaderDividersEnabled
void setHeaderDividersEnabled (boolean headerDividersEnabled)
API 3
启用或禁用页眉视图的分隔线绘图。
dispatchKeyEvent
boolean dispatchKeyEvent (KeyEvent event)
API 1
按照可以获得焦点的顺序(从视图树的顶端到当前获得焦点的视图),分派一个按键事件给下一个视图。若此视图有焦点,事件将会分派给它自己。否则它将按照顺序,分派给下一个节点。此方法同时触动所有按键监听器。
getAccessibilityClassName
CharSequence getAccessibilityClassName ()
API 23
返回此对象的类名以用于辅助功能。子类只能覆盖这个,如果他们实现的东西,应该被视为一个完全新的类的视图使用时的可访问性,与其派生的类无关。这用于填充AccessibilityNodeInfo.setClassName。
setAdapter
void setAdapter (ListAdapter adapter)
API 1
设置ListView后面的数据。 传递给此方法的适配器可能由WrapperListAdapter包装,具体取决于当前使用的ListView功能。
getAdapter
ListAdapter getAdapter ()
API 1
返回ListView当前使用的适配器。 返回的适配器可能不是传递给setAdapter(ListAdapter)的同一适配器,但可能是WrapperListAdapter。
getCheckItemIds
long[] getCheckItemIds ()
Added in API level 4,deprecated in API level 8. 使用getCheckedItemIds()替代。
返回所选项目标识的集合。仅当选择模式未设置为CHOICE_MODE_NONE时,结果才有效。
setDivider
void setDivider (Drawable divider)
API 1
设置将在列表中的每个项目之间绘制的分隔符drawable。
注意:如果drawable没有固有的高度,你也应该调用setDividerHeight(int)。
getDivider
Drawable getDivider ()
API 1
返回将在列表中的每个项目之间绘制的分隔符drawable。
setDividerHeight
void setDividerHeight (int height)
API 1
设置分隔符drawable的高度。将覆盖由setDivider(Drawable)设置的内在高度,
getDividerHeight
int getDividerHeight ()
API 1
返回分隔符drawable的高度。
getFooterViewsCount
int getFooterViewsCount ()
API 1
返回列表中页脚视图的数量。页脚视图是列表底部的特殊视图,不应在布局期间回收。默认为0。
getHeaderViewsCount
int getHeaderViewsCount ()
API 1
返回列表中页眉视图的数量。页脚视图是列表底部的特殊视图,不应在布局期间回收。默认为0。
setItemsCanFocus
void setItemsCanFocus (boolean itemsCanFocus)
API 1
设置ListView的子项是否可以获取焦点。
getItemsCanFocus
boolean getItemsCanFocus ()
API 1
返回ListView的子项是否可以获取焦点。
getMaxScrollAmount
int getMaxScrollAmount ()
API 1
返回列表视图将响应箭头事件而滚动的最大值。即一次滑动事件滑动的view的最大数量。
setOverscrollFooter
void setOverscrollFooter (Drawable footer)
API 9
设置页脚视图。当用户过度滚动列表时,或者当列表的内容未完全填充容器区域时,此区域可以变为可见。
setOverscrollHeader
void setOverscrollHeader (Drawable header)
API 9
设置页眉视图。当用户过度滚动列表时,或者当列表的内容未完全填充容器区域时,此区域可以变为可见。
getOverscrollFooter
Drawable getOverscrollFooter ()
API 9
获取页脚视图。
getOverscrollHeader
Drawable getOverscrollHeader ()
API 9
获取页眉视图。
removeFooterView
boolean removeFooterView (View v)
API 1
删除先前添加的页脚视图。
removeHeaderView
boolean removeHeaderView (View v)
API 1
删除先前添加的页眉视图。
isOpaque
boolean isOpaque ()
API 7
指示此视图是否不透明。不透明视图确保它将使用完全不透明的颜色绘制重叠其边界的所有像素。视图的子类应该尽可能覆盖此方法以指示实例是否不透明。不透明视图由View层次结构以特殊方式处理,可能允许它在无效/绘制通过期间执行优化。
onInitializeAccessibilityNodeInfoForItem
void onInitializeAccessibilityNodeInfoForItem (View view, int position, AccessibilityNodeInfo info)
API 19
使用有关列表中特定项目的信息初始化AccessibilityNodeInfo。
onKeyDown
boolean onKeyDown (int keyCode, KeyEvent event)
API 1
KeyEvent.Callback.onKeyDown()的默认实现:当KEYCODE_DPAD_CENTER或KEYCODE_ENTER被释放时,如果视图被启用并且可点击,则执行视图的按下。
软件键盘中的按键通常不会触发这个监听器,虽然有些人可能在某些情况下选择这样做。不要靠这个来捕获软件按键。
onKeyMultiple
boolean onKeyMultiple (int keyCode, int repeatCount, KeyEvent event)
API 1
KeyEvent.Callback.onKeyMultiple()的默认实现:总是返回false(不处理事件)。
软件键盘中的按键通常不会触发这个监听器,虽然有些人可能在某些情况下选择这样做。不要靠这个来捕获软件按键。
onKeyUp
boolean onKeyUp (int keyCode, KeyEvent event)
API 1
KeyEvent.Callback.onKeyUp()的默认实现:当KEYCODE_DPAD_CENTER,KEYCODE_ENTER或KEYCODE_SPACE被释放时,执行视图的点击。
软件键盘中的按键通常不会触发这个监听器,虽然有些人可能在某些情况下选择这样做。不要靠这个来捕获软件按键。
requestChildRectangleOnScreen
boolean requestChildRectangleOnScreen (View child, Rect rect, boolean immediate)
API 1
当此组的子元素想要将特定矩形定位到屏幕上时调用。
重载此方法的ViewGroup需要确保:
· 子view将是组里的直系子视图
· 矩形将在子view的坐标体系中
重载此方法的ViewGroup需要保持:
· 矩形区域不会改变
· 为使矩形区域全部可见,视图将可以被滚动显示
setCacheColorHint
void setCacheColorHint (int color)
API 1
设置一个纯色的默认背景。不会影响这个view已经存在的背景(通常通过setBackgroundDrawable(Drawable)设置)。
setRemoteViewsAdapter
void setRemoteViewsAdapter (Intent intent)
API 11
设置此ListView以使其通过指定的意图连接到RemoteViewsService的远程视图适配器。
setSelection
void setSelection (int position)
API 1
选中position指定的项目。若为触摸模式,则指定项目不会被选中,但位置变化一样。若position的值小于0,则position为0的项目将被选中。
setSelectionAfterHeaderView
void setSelectionAfterHeaderView ()
API 1
选中页眉视图下的第一个列表项目。
smoothScrollByOffset
void smoothScrollByOffset (int offset)
API 11
平滑滚动到适配器的指定相对位置。视图会滚动,以使指定位置的视图显示出来。
smoothScrollToPosition
void smoothScrollToPosition (int position)
API 8
平滑滚动到适配器的指定位置。视图会滚动,以使指定位置的视图显示出来。
【受保护的方法】
canAnimate
boolean canAnimate ()
API 1
表示此视图组是否可以在首次布局后为其子视图提供动画效果的显示。
dispatchDraw
void dispatchDraw (Canvas canvas)
API 1
用来控制子视图的绘制。派生类覆盖此方法以在listview自己完成绘制后去控制子项的绘制。。
drawChild
boolean drawChild (Canvas canvas, View child, long drawingTime)
API 1
绘制该视图组的一个子视图.该方法负责取得处于正确状态的画布.它包含剪切、转换子视图的滚动坐标为(0,0),并应用切换动画。
findViewTraversal
View findViewTraversal (int id)
API 1
查找子视图中ID对应的视图,没找到返回空。
findViewWithTagTraversal
View findViewWithTagTraversal (Object tag)
API 1
查找子视图中Tag对应的视图,没找到返回空。
layoutChildren
void layoutChildren ()
API 1
子类必须重写此方法以布局其子视图。
onDetachedFromWindow
void onDetachedFromWindow ()
API 1
当视图从窗口分离时调用。在这一点上,它不再具有用于绘图的表面。
onFinishInflate
void onFinishInflate ()
API 1
根据 XML生成视图工作完成.该函数在生成视图的最后调用,在所有子视图添加完之后。
即使子类覆盖了onFinishInflate方法,也应该调用父类的方法,使该方法得以执行。
onFocusChanged
void onFocusChanged (boolean gainFocus, int direction, Rect previouslyFocusedRect)
API 1
当View的焦点改变时被调用。重写时,要确保超类的直接调用,这样取得焦点的方式才是标准的。
当焦点改变事件由定向导航引起时,方向和previousFocusedRect提供对焦点来自何处的进一步信息。
onMeasure
void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
API 1
View调用此方法来确定本身和所包含内容的大小。此方法被measure(int,int)唤起,而且必须被子类重写以得到所包含内容的确切大小。
注意:当重写此方法时,必须调用setMeasureDimension(int,int)来保存View的大小。如果没有做到,将会引发一个measure(int,int)抛出的IllegalStateException(非法状态错误)。超类onMeasure(int,int)可以被调用。
编写基类的确认大小的方法,缺省情况下是根据其背景大小来确认,除非MeasureSepc允许有更大的高度或宽度。子类必须重写onMeasure(int,int)以得到对其内容大小的更准确的测量。
若此方法被重写,它的子类需要确保其高度和宽度至少达到View所规定的最小值(可通过getSuggestedMinimumHeight()和getSuggestedMinimumWidth()得到)。
onSizeChanged
void onSizeChanged (int w, int h, int oldw, int oldh)
API 1
该方法在布局期间,当视图的大小变更时调用.如果只是将视图加入视图树,变更前的值为0。