Android学习--ListView
这篇文章用于总结自己这两天学到的安卓的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的更多相关文章
- Android学习---ListView和Inflater的使用,将一个布局文件转化为一个对象
本文将介绍ListView和Inflater的使用,将接上一篇文章内容. 一.什么是ListView? 在android开发中ListView是比较常用的控件,ListView 控件可使用四种不同视图 ...
- android 学习 ListView使用补充
前面两篇学习适配器的时候用的就是listview,主要是简单的添加,今晚在看了下listview滚动状态事件和动态加载数据,一个小demo. listview的滚动状态主要有三种,onScrollSt ...
- Android学习---ListView的点击事件,simpleAdapter和arrayadapter,SimpleCursoAdapter的原理和使用
如题,本文将介绍 listview的点击事件,simpleAdapter和arrayadapter的原理和使用. 1.ListView的注册点击事件 //注册点击事件 personListView.s ...
- Android学习——ListView的缓存机制
在使用ListView的时候,需要加载适配器和数据源,这篇文章主要介绍一下ListView的使用以及利用ListView的缓存机制来减少系统的初始化时间. ListView的使用 ListView和V ...
- 42.Android之ListView中ArrayAdapter简单学习
今天学习下Android中ListView关于ArrayAdapter数据绑定, 废话少说直接上代码. 改下布局文件: <?xml version="1.0" encodin ...
- 38.Android之ListView简单学习(一)
android中ListView用的很普遍,今天来学习下,本篇主要以本地数据加载到listview,后面会学习从网络获取数据添加到listview. 首先改下布局文件: <?xml versio ...
- android学习笔记12——ListView、ListActivity
ListView.ListActivity ==> ListView以垂直列表的形式显示所有列表项. 创建ListView的方式: 1.直接使用ListView创建 2.Activity继承Li ...
- Android学习随笔--ListView的分页功能
第一次写博客,可能格式,排版什么的会非常不美观,不过我主要是为了记录自己的Android学习之路,为了以后能有些东西回顾.既然是为了学习,那我肯定会吸收各位大大们的知道经验,有不足的地方请指出. 通过 ...
- Android学习笔记(20)————利用ListView制作带竖线的多彩表格
http://blog.csdn.net/conowen/article/details/7421805 /********************************************** ...
随机推荐
- POJ3436------ACM Computer Factory
题目链接 ACM Computer Factory Description As you know, all the computers used for ACM contests must be i ...
- Http状态码(了解)
一些常见的http状态码 200 - OK,服务器成功返回网页 - Standard response for successful HTTP requests. 301 - Moved Pe ...
- Git-Git基本操作
先来合个影 马上就要和之前实践遗留的数据告别了,告别之前是不是要留个影呢?在Git里,"留影"用的命令叫做tag,更加专业的术语叫做"里程碑"(打tag,或打标 ...
- Redis实现之链表
链表 链表提供了高效的节点重排能力,以及顺序性的节点访问顺序,并且可以通过增删节点来灵活地调整链表的长度.作为一种常用数据结构,链表内置在很多高级的编程语言里面,因为Redis使用的C语言并没有内置这 ...
- 运维Python面试题
本章内容 1 osodjfoskjdofjsdjfjsdf 123 sdfdfadf 1 2 3 4 5 6 from django.db import models class user ...
- 再写一篇tps限流
再写一篇tps限流 各种限流算法的称呼 网上有很多文章介绍限流算法,但是对于这些算法的称呼与描述也是有点难以理解.不管那么多了.我先按我理解的维度梳理一下. 主要维度是:是正向计数还是反向计数.是定点 ...
- gcc学习记录
-Wall: 使输出中包含警告信息,提示一些可以避免的错误.如果没有错误,则不会输出信息. -o:后面加上可执行文件的名字.如果不加-o选项,会默认生成a.out可执行文件.举例:gcc -Wall ...
- 区分Activity的四种加载模式【转载】
此文为转载,文章来源:http://marshal.easymorse.com/archives/2950 文章作者: Marshal's Blog 参考文章:http://blog.csdn.n ...
- Android数据储存之SharedPreferences
Android中SharedPreferences通常与Editor连用 接口SharedPreferences常用方法: boolean contains(String str):判断SharedP ...
- webpack & async await
webpack & async await ES 7 // async function f() { // return 1; // } const f = async () => { ...