原标题:Android零基础入门|自定义ArrayAdapter
ListView用起来还是比较简单的,也是Android应用程序中最重要的一个组件,但其他ListView可以随你所愿,能够完成很多想要的精美列表,而这正是我们接下来要学习的内容。
一、自定义ArrayAdapter
从上期自定义列表项示例知道,每个列表项的图标都一样,如果需要每个列表项的图标根据内容动态表示,Android系统的ArrayAdapter就无能为力了,就只能使用自定义ArrayAdapter来实现啦。
做法就是创建一个ArrayAdapter的子类,重写其getView()方法,再构建不同的列表项。其中getView()方法返回的是一个View,也就是与Adapter数据对应的相应位置的行。
在学习自定义ArrayAdapter前,一起先来学习一下LayoutInflater类。在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件并实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。
LayoutInflater 是一个抽象类,获得 LayoutInflater 实例有以下三种方式。
// 通过Activity获取LayoutInflaterinflater=getLayoutInflater();// 通过静态方法获取LayoutInflaterinflater=LayoutInflater.from(context);// 通过系统服务获取LayoutInflaterinflater= (LayoutInflater)context .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
其实这三种方式最终本质是都是调用的Context.getSystemService(),关于该方法的使用会在后续内容进行学习。
获得LayoutInflater 实例后,就可以调用inflater.inflater()方法来查找并实例化布局文件了,常用于获得ListView的每个Item布局。
二、示例
接下来用一个示例来学习如何自定义ArrayAdapter,需要重写getView()方法,在不同对的行中根据内容显示不同的图标。要显示的图标根据显示的字符串首字母来判断,如果以字母“a”或者“A”开头,就显示一张字母A的图标。
继续使用WidgetSample工程的listviewsample模块,在app/main/res/layout/目录下创建custom_arrayadapter_layout.xml文件,在其中填充如下代码片段:
然后在res/layout/目录下新建一个custom_arrayadapter_item.xml的列表项布局文件,其代码如下:
再创建一个MyArrayAdapter类,继承ArrayAdapter类,重写getView()方法,具体代码如下:
在上述代码中,重写了getView()方法,以便根据要显示的对象返回列表项,其中对象是用Adapter中的位置索引来表示的。
通过LayoutInflater获取到的View对象,实际上就有由列表项布局文件,包含ImageView和TextView的LinearLayout。然后找到ImageView和TextView组件,填充内容给TextView,并根据内容的首字母来判断ImageView要显示的字母图标。
接下来为ListView提供Adapter,使用自定义ArrayAdapter决定ListView所要显示的列表项。新建CustomArrayAdapterActivity.java文件,加载上面新建的布局文件,具体代码如下:
可以发现,使用自定义ArrayAdapter和使用Android原生ArrayAdapter的步骤是一样的。
修改启动的Activity,运行程序,可以看到下图所示界面效果。
从上图可以看出,这个显然比之前的示例界面更实用,可以动态显示列表项内容,可以设计出非常美观的列表页面。
今天就先到这里,如果有问题欢迎留言一起探讨,也欢迎加入Android零基础入门技术讨论微信群,共同成长!
此文章版权为微信公众号分享达人秀(ShareExpert)——鑫鱻所有,若需转载请联系作者授权,特此声明!
往期总结分享:
第1节:Android的前世今生
第2节:Android 系统架构和应用组件那些事
第3节:带你一起来聊一聊Android开发环境
第4节:正确安装和配置JDK
第5节:善用ADT Bundle
第6节:配置优化SDK Manager
第7节:搞定Android模拟器
第8节:HelloWorld,第一趟旅程出发点
第9节:Android实战,不懂代码也可以开发
第10节:开发IDE迎来Android Studio
第11节:运行Android Studio工程
第12节:熟悉Android Studio界面
第13节:Android Studio配置优化
第14节:使用高速Genymotion
第15节:掌握Android Studio项目结构
第16节:Android用户界面开发概述
第17节:TextView属性和方法大全
第18节:EditText的属性和使用方法
第19节:Button使用详解
第20节:CheckBox和RadioButton使用大全
第21节:ToggleButton和Switch使用大全
第22节:ImageView的属性和方法大全
第23节:ImageButton和ZoomButton使用
第24节:自定义View简单使用
第25节:简单且最常用的LinearLayout
第26节:layout_gravity和gravity大不同
第27节:正确使用padding和margin
第28节:轻松掌握RelativeLayout相对布局
第29节:善用TableLayout表格布局
第30节:两分钟掌握FrameLayout帧布局
第31节:少用的AbsoluteLayout绝对布局
第32节:新推出的GridLayout网格布局
第33节: Android事件处理概述
第34节:Android中基于监听的事件处理
第35节:Android中基于回调的事件处理
第36节:Android系统事件的处理
第37节:初识ListView
第38节:初识Adapter
第39节:ListActivity和自定义列表
返回搜狐,查看更多
责任编辑:
平台声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
阅读 (
)