ListView的简单用法,先在布局文件中添加ListView控件:

接下来修改MainActivity中的代码:

由上面的代码可以知道,数据是无法直接传递给ListView的,需要借助适配器来完成。ArrayAdapter可以通过泛型来指定要适配的数据类型,然后在构造函数中把要适配的数据传入即可,ArrayAdapter有多个构造函数,应该根据实际情况选择最合适的一种。在上面的构造函数中,一次传入当前上下文,ListView子项布局的id,以及要适配的数据。在上面代码中我们使用的是android.R.layout.simple_list_item_1作为ListView子项布局的id,这是Android内置的布局文件,里面只有一个TextView,可用于简单地显示一段文本。最后,调用ListView的setAdapter()方法,将构建好的适配器对象传递进去,这样ListView和数据之间就建立完成了。

定制ListView的界面

     只显示一段文本的ListView实在是太单调的,所以需要对ListView的界面进行定制。首先建立一个Fruit类,如下:

然后需要为ListView的子项建立一个自定义的布局,在layout目录下新建fruit_item.xml,代码如下:

接下来我们要创建一个自定义的适配器,这个适配器继承自ArrayAdapter,并将泛型指定为Fruit类,新建FruitAdapter,代码如下:

这样将之前MainActivity中的ArrayAdapter改为FruitAdapter就可以了。

ListView的效率

      目前,ListView的效率是很低的,因为在FruitAdapater的getView()方法中每次都将布局重新加载一次,当ListView快速滚动的时候这就会成为性能的瓶颈,仔细观察,getView()方法中还有一个convertView参数,这个参数用于将之前加载好的布局进行缓存,以便之后可以进行重用,那么修改之后的代码如下:

在getView()方法中进行了判断,如果convertView为空,则使用LayoutInflater去加载布局,如果不为空则直接对convertViewh进行重用。这样就大大提高了ListView的运行效率。但是每次还需要通过findViewById()方法来找到控件,也是十分费时的,其实控件也是可以缓存的,如下:

ViewHolder类如下:

通过以上两步的优化,ListView的运行效率已经很高了。

ListView的点击事件

       

控件ListView的更多相关文章

  1. [Android Pro] android控件ListView顶部或者底部也显示分割线

    reference to  :  http://blog.csdn.net/lovexieyuan520/article/details/50846569 在默认的Android控件ListView在 ...

  2. 【Android】12.0 UI开发(三)——列表控件ListView的简单实现2

    1.0 由于书上内容,已经和实际编程的兼容性已经不太友好,重写了项目,用于进一步学习列表控件ListView. 2.0 新建项目ListViewTest,其中文件目录如下: 3.0 ActivityC ...

  3. 从0系统学Android--3.5 最常用和最难用的控件---ListView

    从0系统学Android-- 3.5 最常用和最难用的控件---ListView 本系列文章目录:更多精品文章分类 本系列持续更新中.... 3.5 最常用和最难用的控件---ListView Lis ...

  4. Android基础控件ListView基础操作

    1.简介 基于Android基础控件ListView和自定义BaseAdapter适配器情况下,对ListView的数据删除和添加操作: public boolean add(E e) {//添加数据 ...

  5. WinFrom 公共控件 Listview 的使用

    Listview绑定数据库数据展示与操作使用  1.拖一个Listview控件到项目中先将视图改为Details 2.编辑列 设置列头  添加columnHeader成员 Text 是显示的名称 3. ...

  6. Android列表控件ListView详解

    ListView绝对可以称得上是Android中最常用的控件之一,几乎所有应用程序都会用到它. 由于手机屏幕空间都比较有限,能够一次性在屏幕上显示的内容并不多,当我们的程序中有大量的数据需要展示的时候 ...

  7. 公共控件Listview

    ListView属性中,Items是行的总集合,Items集合中的每一个是一行,Items集合里面有ListViewItem集合,这个集合实例化:ListViewItem li=new ListVie ...

  8. Android:控件ListView列表项与适配器结合使用

    Listview是用来展示一些重复性的数据用的,比如一些列表集合数据展示到手机,需要适配器作为载体获取数据,最后将数据填充到布局. ListView里面的每个子项Item可以使一个字符串,也可以是一个 ...

  9. 安卓Android控件ListView获取item中EditText值

    可以明确,现在没有直接方法可以获得ListView中每一行EditText的值. 解决方案:重写BaseAdapter,然后自行获取ListView中每行输入的EditText值. 大概算法:重写Ba ...

随机推荐

  1. Error executing aapt: Return code -1073741819

    在做andrid项目的时候,本来想把a项目中的a功能模块复制到b项目中,但是复制过程中出现xml文件id的问题, Error executing aapt: Return code -10737418 ...

  2. string strSQL = "Select * From Employees;Select * from Customers";执行两次查询

    SqlCommand对象的字符串SQL命令可以做多个,以查询为例,用到SqlDataReader的一些方法,如ExecuteReader(),Read()(一条命令内的移动至下一记录),NextRes ...

  3. Bluetooth HFP介绍

    目录 1. 介绍 1.1 目的 1.2 使用场景 1.3 依赖关系 1.4 协议栈 1.5 角色 2. 应用层 3. 空白章节 4. 互操作性要求 4.1 介绍 4.2 Service Level C ...

  4. SVN提交注意点

    一.提交之前先更新 1.         SVN更新的原则是要随时更新,随时提交.当完成了一个小功能,能够通过编译并且自己测试之后,谨慎地提交. 2.         如果在修改的期间别人也更改了sv ...

  5. yii2 实现多表联查

  6. NDK编译FreeImage

    参考了 以下2篇文章 并作了一小点修改 http://recursify.com/blog/2013/05/25/building-freeimage-for-android http://blog. ...

  7. spring3 mvc:方法返回值的学习

    新建后台代码用以测试返回类型,在这里我新建的如下: /** * 项目名称:Spring3mvc demo * Copyright ? 2010-2012 spartacus.org.cn All Ri ...

  8. Ubuntu deb包使用

    deb是debian linus的安装格式,跟red hat的rpm非常相似,最基本的安装命令是:dpkg -i file.deb dpkg 是Debian Package的简写,是为Debian 专 ...

  9. windows安装java环境

    1.下载安装jdk:以jdk-8u66-windows-x64为例. 2.JDK的环境变量配置 用鼠标右击“计算机”,选择“属性”->“高级系统设置”->“环境变量”->“系统变量” ...

  10. 修改seacherbar 取消按钮属性

    继承UISearchBar.   重载setShowCancelButton. [super xxx]; ... for (UIView *subview in self.subview) { if ...