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里面的参数,要让你完全记住怎么写,我觉得挺难的,学会看父类的方法是不错的一个方法:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯Bugly的专栏

Android APP 快速 Pad 化实现

如何能在最快的时间内,实现一个最新版本 Android app 的 pad 化呢?从拿到一个大型手机 app 代码开始开发到第一个其全新 pad 版本的发布,我...

5816
来自专栏Java成神之路

GEF入门实例_总结_05_显示一个空白编辑器

在第三节( GEF入门实例_总结_03_显示菜单和工具栏  ),我们创建了菜单和工具栏。

993
来自专栏梦里茶室

Activity四种launchMode

总共有四篇关于Activity,task,launchMode的文章,可以在我的博客中查看,或者在文章底部点下一篇。 1.Standard 默认模式,多次实例化...

1959
来自专栏编程之路

羊皮书APP(Android版)开发系列(二十三)10分钟单例模式实战-Glide图片加载库封装工具类

1115
来自专栏分享达人秀

引入Fragment原来是这么回事

随着大众生活水平的提高,再加上移动互联网的迅速发展,几乎每个人都至少拥有一台搭载Android系统的移动设备。Android设备的多样性给我们带来了很大...

3655
来自专栏分享达人秀

Android中基于回调的事件处理

通过前面两期掌握了Android中基于监听的事件处理的五种形式,那么本期一起来学习Android中基于回调的事件处理。 一、基于回调的事件处理概述 ...

2066
来自专栏非著名程序员

浅谈Andorid开发中的MVP模式

? 导语:最近公众号后台经常收到一些消息,说能不能讲一些开发模式,经过思考后,我决定讲一讲MVP模式。希望对大家能够有所帮助。并写了一个简单的小demo。 ...

2306
来自专栏jianhuicode

Fragment 学习笔记(1)

网上关于Fragment相关的博客资料很多,写关于这个知识笔记是加深记忆,大神略过; 0x01 了解Fragment 当然看官方文档(http://www.an...

1905
来自专栏青蛙要fly的专栏

项目需求讨论-APP中提交信息及编辑信息界面及功能

好久好久没写文章了,这次我们来讨论下一些具有填写很多资料的界面,或者详情编辑界面等如何做起来更方便。 (PS:我写的可能不好,希望大家不好喷,哈哈,可以留言)

1172
来自专栏Android干货

Android项目实战(六):JazzyGridView和JazzyListView的使用

2234

扫码关注云+社区

领取腾讯云代金券