本文转载于:http://blog.csdn.net/vector_yi/article/details/23195411

近期在重新学习Android控件知识,目前进行到ListView,感觉这是一块尤其难啃的硬骨头:最为常用、用法较复杂、涉及的其他Android知识也较多。因此决定系统地好好复习一遍ListView。其中涉及到的其他知识点将在后期以链接的形式不断进行更新。

本文仅介绍ListView相关的XML属性及方法,

关于ListView在App中的用法Android
ListView 常见用法

关于ListView中需要注意的地方,请移步ListView中几个需要注意的属性.

一、ListView类的继承关系

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.AdapterView<T extends android.widget.Adapter>
         ↳ android.widget.AbsListView
           ↳ android.widget.ListView

可以看出,ListView并不直接继承于View,而是直接继承于抽象类AbsListView.

ListView的直接子类有:ExpandableListView.

二、ListView概述

ListView是一个用来纵向显示条目的视图,这些条目内容来自于与该ListView相关联的ListAdapter.

三、嵌套类

[java] view
plain
copy

  1. class ListView.FixedViewInfo//用来在列表内展现一个固定位置视图,如在列表顶端的header和在列表底端的footer

四、XML属性

1.ListView的XML属性

[java] view
plain
copy

  1. android:divider//在列表条目之间显示的drawable或color
  2. android:dividerHeight//用来指定divider的高度
  3. android:entries//构成ListView的数组资源的引用。对于某些固定的资源,这个属性提供了比在程序中添加资源更加简便的方式
  4. android:footerDividersEnabled//当设为false时,ListView将不会在各个footer之间绘制divider.默认为true。
  5. android:headerDividersEnabled//当设为false时,ListView将不会在各个header之间绘制divider.默认为true。

2.继承自AbsListView的XML属性

[java] view
plain
copy

  1. android:cacheColorHint// 表明这个列表的背景始终以单一、固定的颜色绘制,可以优化绘制过程。
  2. android:choiceMode//为视图指定选择的行为。可选的类型有:none、singleChoice、multipleChoice、multipleChoiceModal。
  3. android:drawSelectorOnTop// 若设为true,选择器将绘制在选中条目的上层。默认为false。
  4. android:fastScrollEnabled// 设置是否允许使用快速滚动滑块。
  5. android:listSelector// 设置选中项显示的可绘制对象,可以是图片或者颜色属性。
  6. android:scrollingCache// 设置在滚动时是否使用绘制缓存。若设为true,则将使滚动表现更快速,但会占用更内存。默认为true。
  7. android:smoothScrollbar// 为真时,列表会使用更精确的基于条目在屏幕上的可见像素高度的计算方法。默认该属性为真,如果你的适配器需要绘制可变高的条目,他应该设为假。当该属性为真时,你在适配器在显示变高条目时,滚动条的把手会在滚动的过程中改变大小。当设为假时,列表只使用适配器中的条目数和屏幕上的可见条目来决定滚动条的属性。
  8. android:stackFromBottom// 设置GridView和ListView是否将内容从底部开始显示。
  9. android:textFilterEnabled// 当设为真时,列表会将结果过滤为用户类型。前提是这个列表的Adapter必须支持Filterable接口。
  10. android:transcriptMode//设置列表的transcriptMode.有如下选项可选:
  11. //(1)disabled          禁用TranscriptMode,也是默认值;
  12. //(2)normal             当新条目添加进列表中并且已经准备好显示的时候,列表会自动滑动到底部以显示最新条目;
  13. //(3)alwaysScroll   列表会自动滑动到底部,无论新条目是否已经准备好显示.

3.继承自ViewGroup的XML属性

[java] view
plain
copy

  1. android:addStatesFromChildren// 设置这个ViewGroup的drawable状态是否包括子View的状态。若设为true,当子View如EditText或Button获得焦点时,整个ViewGroup也会获得焦点。
  2. android:alwaysDrawnWithCache// 设置ViewGroup在绘制子View时是否一直使用绘图缓存。默认为true。
  3. android:animationCache// 设置布局在绘制动画效果时是否为其子View创建绘图缓存。若设为true,将会消耗更多的内存,要求持续时间更久的初始化过程,但表现更好。默认为true。
  4. android:clipChildren// 设置子View是否受限于在自己的边界内绘制。若设为false,当子View所占用的空间大于边界时可以绘制在边界外。默认为true。
  5. android:clipToPadding//定义布局间是否有间距。默认为true。
  6. android:descendantFocusability// 定义当寻找一个焦点View的时候,ViewGroup与其子View之间的关系。可选项为:
  7. //(1)beforeDescendants       ViewGroup会比其子View更先获得焦点;
  8. //(2)afterDescendants           只有当无子View想要获取焦点时,ViewGroup才会获取焦点;
  9. //(3)blockDescendants         ViewGroup会阻止子View获取焦点
  10. android:layoutAnimation//定义当ViewGroup第一次展开时的动画效果,也可人为地在第一次展开后调用。
  11. android:persistentDrawingCache// 定义绘图缓存的持久性。有如下可选项:
  12. //(1)none                    当使用过后不保留绘图缓存
  13. //(2)animation    在layout animation之后保留绘图缓存
  14. //(3)scrolling    在Scroll操作后保留绘图缓存
  15. //(4)all     always保留绘图缓存

4.继承自View的XML属性

太多了………………饶过我吧

五、常用public方法

1.add/remove  方法

[java] view
plain
copy

  1. void addFooterView(View v)//增加一个固定在列表底部的View,参数 v为欲添加的视图
  2. void addFooterView(View v,Object data,boolean isSelectable)//增加一个固定在列表底部的View,参数 v为欲添加的视图,data为与View绑定的数据,isSelectable设置是否可选
  3. void addHeaderView(View v)//增加一个固定在列表顶部的View,参数 v为欲添加的视图
  4. void addHeaderView(View v,Object data,boolean isSelectable)//增加一个固定在列表顶部的View,参数 v为欲添加的视图,data为与View绑定的数据,isSelectable设置是否可选
  5. boolean removeFooterView(View v)//去除一个之前添加的FooterView,参数v为欲删除的视图,若成功删除则返回true
  6. boolean removeHeaderView(View v)//去除一个之前添加的HeaderView,参数v为欲删除的视图,若成功删除则返回true

2.响应事件方法

[java] view
plain
copy

  1. boolean OnKeyDown(int keyCode,KeyEvent event)//当按下键时响应
  2. boolean OnKeyMultiple(int keyCode,int repeatCount,KeyEvent event)//重复按下键时响应,repeatCount为按下次数
  3. boolean OnKeyUp(int keyCode,KeyEvent event)//当键被释放时响应

3.get方法

[java] view
plain
copy

  1. ListAdapter getAdapter()//返回ListView正在使用的Adapter
  2. Drawable getDivider()//以Drawable形式返回divider
  3. int getDividerHeight()//这个……真不想解释了
  4. int getFooterViewCount()//返回FooterView的个数,若无返回0
  5. int getHeaderViewCount()//返回HeaderView的个数,若无返回0
  6. boolean getItemsCanFocus()//返回是否有可获得焦点的条目
  7. int getMaxScrollAmount()//The maximum amount a list view will scroll in response to an arrow event.(求翻译)
  8. Drawable getOverscrollFooter()//返回绘制在所有条目之下的drawable
  9. Drawable getOverscrollHeader()//返回绘制在所有条目之上的drawable

4.set方法

[java] view
plain
copy

  1. void setAdapter(ListAdapter adapter)//为ListView绑定Adapter
  2. void setCacheColorHint(int color)//参数为0时,将CacheColor设为透明;参数非零时,指定一种颜色作为ListView的背景
  3. void setDivider(Drawable divider)//为ListView中每个条目之间设定一个Divider
  4. void setDividerHeight(int height)//设定Divider的高度,单位为pixel
  5. void setFooterDividerEnabled(boolean footDividerEnabled)//设置FooterView之间的Dividers是否可用
  6. void setHeaderDividerEnabled(boolean headDividerEnabled)//设置HeaderView之间的Dividers是否可用
  7. void setItemsCanFocus(boolean itemsCanFocus)//设置是否包含可获取焦点的Item
  8. void setOverscrollFooter(Drawable footer)//设置一个当滚动时或ListView未填满屏幕时能显示在ListView下方的Drawable
  9. void setOverscrollHeader(Drawable header)//设置一个当滚动时能显示在ListView上方的Drawable
  10. void setRemoteViewAdapter(Intent intent)//为此AbsListView设置一个通过intent连接到RemoteViewsService而提供的远程视图适配器
  11. void setSelection(int position)//设置被选中的条目。如果参数小于0,则position为0的条目将被选中
  12. void setSelectionAfterHeaderView()//选中headerView下方的第一条条目

ListView的属性及方法详解的更多相关文章

  1. moviepy音视频剪辑:视频剪辑基类VideoClip的属性及方法详解

    ☞ ░ 前往老猿Python博文目录 ░ 一.概述 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>和<moviepy音视频剪辑:moviepy中的剪辑基类Cl ...

  2. VB6.0中WinSock控件属性和方法详解

    原文链接:http://liweibird.blog.51cto.com/631764/653134 WinSock控件能够通过UDP协议(用户数据报协议)或TCP协议(数据传输协议)连接到远程的机器 ...

  3. moviepy音视频剪辑:moviepy中的剪辑基类Clip的属性和方法详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一. ...

  4. [js高手之路]原型对象(prototype)与原型链相关属性与方法详解

    一,instanceof: instanceof检测左侧的__proto__原型链上,是否存在右侧的prototype原型. 我在之前的两篇文章 [js高手之路]构造函数的基本特性与优缺点 [js高手 ...

  5. js面向对象之公有、私有、静态属性和方法详解

    现下,javascript大行其道,对于网站开发人员来说,javascript是必需掌据的一门语言,但随着jquery等框架的流行和使用,许多人对于原生javascript缺乏深入的理解,习惯了函数式 ...

  6. iOS开发UI篇 -- UISearchBar 属性、方法详解及应用(自定义搜索框样式)

    很多APP都会涉及到搜索框,苹果也为我们提供了默认的搜索框UISearchBar.但实际项目中我们通常需要更改系统默认搜索框的样式.为了实现这一目标,我们需要先搞懂 UISearchBar 的属性及方 ...

  7. JavaScript原生对象属性和方法详解——Array对象

    http://www.feeldesignstudio.com/2013/09/native-javascript-object-properties-and-methods-array/ lengt ...

  8. python学习笔记8--面向对象--属性和方法详解

    属性: 公有属性  (属于类,每个类一份) 普通属性  (属于对象,每个对象一份) 私有属性    (属于对象,跟普通属性相似,只是不能通过对象直接访问) 方法:(按作用) 构造方法 析构函数 方法: ...

  9. JavaScript document和window属性及方法详解

    [document对象] 该对象是window和frames对象的一个属性,是显示于窗口或框架内的一个文档. 属性 alinkColor 活动链接的颜色(ALINK)  anchor 一个HTMI锚点 ...

随机推荐

  1. wp8开发笔记之应用程序真机发布调试

    写在前面的话: 相信很多和我一样关注wp8动态以及已经开发了一些wp8应用程序的朋友们都遇到过这样的问题,写的程序在模拟器上进行调试总是显的没什么说服力,想拿真机进行实际测试, 该怎么办才好呢? 进行 ...

  2. MySQL 配置文件中忘配置default-character-set引发的乱码问题

    今天,一开发同事使用jdbc连接数据库执行一条语句无结果集,但是通过sqlyou执行相同的语句有返回结果. 执行的语句where条件中含有中文,这应该是字符集引起的 此开发测试实例刚迁移不久的,查看迁 ...

  3. 探索javascript----滚轮事件的兼容

    具体使用时,我们还要判断浏览器,记得传入的是兼容事件:var e=window.event||ev; 选择事件:

  4. 深入理解JavaScript系列:JavaScript的构成

    此篇文章不是干货类型,也算不上概念阐述,就是简单的进行一个思路上的整理. 要了解一样东西或者完成一件事情,首要的就是先要搞清楚他是什么.作为一个前端开发人员,JavaScript应该算作是最核心之一的 ...

  5. [转] 添加新的系统调用 _syscall0(int, mysyscall)

    实验目的阅读 Linux 内核源代码,通过添加一个简单的系统调用实验,进一步理解Linux操作系统处理系统调用的统一流程.通过用kernel module的方法来实现一个系统调用实验,进一步理解Lin ...

  6. C++复数类对除法运算符 / 的重载

    C8-1 复数加减乘除 (100.0/100.0 points) 题目描述 求两个复数的加减乘除. 输入描述 第一行两个double类型数,表示第一个复数的实部虚部 第二行两个double类型数,表示 ...

  7. c++类的嵌套(1)

    在一个类的内部定义另一个类或结构体,我们称之为嵌套类(nested class),或者嵌套类型.之所以引入这样一个嵌套类,往往是因为外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现 ...

  8. 完整java开发中JDBC连接数据库代码和步骤

    JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...

  9. Java语言的安全性的体现

    Java语言的安全性的体现 1.严格遵循面向对象的规范.这样封装了数据细节,只提供接口给用户.增加了数据级的安全性. 2.无指针运算.java中的操作,除了基本类型都是引用的操作.引用是不能进行增减运 ...

  10. C++学习笔记28:运行期型式信息

    RTTI 运行期标识对象的型式信息 优势:允许使用指向基类的指针或引用自如地操作派生类的对象 typeid:获取表达式的型式:type_info:型式信息类 头文件:typeinfo 对象转型模板 d ...