这篇文章用于总结自己这两天学到的安卓的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里面的参数,要让你完全记住怎么写,我觉得挺难的,学会看父类的方法是不错的一个方法: