码迷,mamicode.com
首页 > 移动开发 > 详细

Android学习--ListView

时间:2017-07-24 19:07:40      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:getview   get   数据源   font   adapter   list   cell   使用   自定义   

这篇文章用于总结自己这两天学到的安卓的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

标签:getview   get   数据源   font   adapter   list   cell   使用   自定义   

原文地址:http://www.cnblogs.com/taoxu/p/7154741.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!