这篇文章用于总结自己这两天学到的安卓的ListView和RecyclerView 的笔记,以及从我这个iOS开发者的角度去理解和学习这两个控件,会比较一下他们个iOS中那些控件是一致的,可以用来对比的。

一:ListView 最简单的用法

ListView最简单的用法无非就是用它写一个最基本的列表界面,展示的数据也就是我们最基本和常见的单条数据,一步一步的走下去:

ListView的创建,先说说它的布局的创建,直接代码了,很简单的一个ListView的宽、高和id:

布局文件创建完之后就是我们的在MainActivity中的注册了,一些自己理解的注释都在下面,能帮助理解:

看了上面的代码和注释,也会知道,我们的重点就在这个适配器,要是我们用系统的ArrayAdapter,我们再通过initFruits方法创建好数据源之后,用下面的方法:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, data);

就成功的构造出我们的适配器,这样就是我们最简单的ListView。

在iOS中,(如果你懂iOS)你肯定知道我们的TableView用的很多时候,需要你去自定义Cell,我们下面说的自定义安卓ListView的适配器就是我们iOS中说的自定义Cell,这个才是重点,相信你也知道。

二:自定义ListViwe适配器(自定义ListView界面)

我们在这里自定义一个叫 FruitAdapter 的适配器,我们看一下这个适配器里面的内容:

重点还是看看这个FruitAdapter适配器里面的getView这个方法,这个方法的具体代码如下,并且这个方法里面已经是对ListView进行了优化的,看具体的注释内容:

说说自己理解的这个优化的过程:

一 :  我们利用View对contentView进行了缓存,判断要是contentView为空,就利用LayoutInflater去加载布局,要是这个contentView不为空,我们就直接重用,其实这里的重用我相信每个做iOS的都理解,和cell的重用是一个意思。

二:  我们再看看另一个ViewHolder,这个的作用就是对控件进行缓存,因为要是不缓存的话你每一次getView的时候获取到的控件的时候都要进行一次 findViewById方法进行读取,这样我们利用这个ViewHolder,就不会每次通过findViewById方法来获取控件。

经过上面两步的优化,这个ListView的运行效率已经非常不错了!

三: ListView的点击事件

这个就像你用了TableView的时候,你写了那么多cell肯定是能点击的,我们就说说ListView的点击事件:

我们这里是简单的写了它的点击事件,让它弹出一个Toast, 当然这个Toast前面我们也是说过的,我们使用 setOnItemClickListener 为ListView 注册一个监听器,当用户点击了ListView当中的任何一个子项时候,就会回调onItemClick()方法,这个方法里面的参数如下,你可以Command + (点击OnItemClickListener)方法进去看看这个onItemClick里面的参数,要让你完全记住怎么写,我觉得挺难的,学会看父类的方法是不错的一个方法:

Android学习--ListView的更多相关文章

  1. Android学习---ListView和Inflater的使用,将一个布局文件转化为一个对象

    本文将介绍ListView和Inflater的使用,将接上一篇文章内容. 一.什么是ListView? 在android开发中ListView是比较常用的控件,ListView 控件可使用四种不同视图 ...

  2. android 学习 ListView使用补充

    前面两篇学习适配器的时候用的就是listview,主要是简单的添加,今晚在看了下listview滚动状态事件和动态加载数据,一个小demo. listview的滚动状态主要有三种,onScrollSt ...

  3. Android学习---ListView的点击事件,simpleAdapter和arrayadapter,SimpleCursoAdapter的原理和使用

    如题,本文将介绍 listview的点击事件,simpleAdapter和arrayadapter的原理和使用. 1.ListView的注册点击事件 //注册点击事件 personListView.s ...

  4. Android学习——ListView的缓存机制

    在使用ListView的时候,需要加载适配器和数据源,这篇文章主要介绍一下ListView的使用以及利用ListView的缓存机制来减少系统的初始化时间. ListView的使用 ListView和V ...

  5. 42.Android之ListView中ArrayAdapter简单学习

    今天学习下Android中ListView关于ArrayAdapter数据绑定, 废话少说直接上代码. 改下布局文件: <?xml version="1.0" encodin ...

  6. 38.Android之ListView简单学习(一)

    android中ListView用的很普遍,今天来学习下,本篇主要以本地数据加载到listview,后面会学习从网络获取数据添加到listview. 首先改下布局文件: <?xml versio ...

  7. android学习笔记12——ListView、ListActivity

    ListView.ListActivity ==> ListView以垂直列表的形式显示所有列表项. 创建ListView的方式: 1.直接使用ListView创建 2.Activity继承Li ...

  8. Android学习随笔--ListView的分页功能

    第一次写博客,可能格式,排版什么的会非常不美观,不过我主要是为了记录自己的Android学习之路,为了以后能有些东西回顾.既然是为了学习,那我肯定会吸收各位大大们的知道经验,有不足的地方请指出. 通过 ...

  9. Android学习笔记(20)————利用ListView制作带竖线的多彩表格

    http://blog.csdn.net/conowen/article/details/7421805 /********************************************** ...

随机推荐

  1. poj1142 Smith Numbers

    Poj1142 Smith Numbers Smith Numbers Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13854 ...

  2. java中如何判断一个字符串是否包含另外一个字符串的方法

    indexOf(String s)的使用,如果包含,返回的值是包含该子字符串在父类字符串中起始位置: 如果不包含必定全部返回值为-1 package my_automation; public cla ...

  3. 自动检测ARouter路由地址分组使用冲突问题

    背景 项目中使用ARouter进行路由,由于不同上层业务模块都可能会使用到同一目标的路由地址,因此,将所有业务模块的路由地址以一种类似静态常量的方式设置在Base模块中.这样,在实际目前上加上对应此地 ...

  4. App 设计技巧

    http://www.360doc.com/content/14/1120/18/21412_426730809.shtml http://veryui.diandian.com/post/2013- ...

  5. Form 组件动态绑定数据

    1.Form 组件的作用: a.对用户提交的数据进行验证(form表单/ajax) b.保留用户上次输入的信息 c.可以生成html标签(input表单类的标签) 2..由于form组件中每个字段都是 ...

  6. sqlserver不能创建数据库关系图

    use [你的数据库名]EXEC sp_changedbowner 'sa'

  7. [转]Ubuntu下添加开机启动脚本

    作者: 王恒 发表于 2012年 11月 5日 1.方法一,编辑rc.loacl脚本 Ubuntu开机之后会执行/etc/rc.local文件中的脚本, 所以我们可以直接在/etc/rc.local中 ...

  8. javascript原生360 开机小动画

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  9. cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'mongo:mongo-client'.

    cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element ...

  10. cf 853 D Michael and Charging Stations [dp]

    题面: 传送门 思路: 看到题目,第一思路是贪心,但是我很快就否决掉了(其实分类贪心也可以做) 然后就想,贪心不能解决的状态缺失,是否可以用dp来解决呢? 事实证明是可以的 我们设dp[i][j]表示 ...