`
lyunabc
  • 浏览: 561109 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

Android简明开发教程十一:自定义Adapter显示列表

 
阅读更多

在介绍数据绑定时,我们使用了系统自带的SimpleAdapter。Android 允许自定义Adapter ,理论上可以使用任意的View(Layout)来显示数据。下图是对AndroidGraphics2DTutorial做改动,使用自定义Adapter来显示示例Activity列表。

在例子中我们把原来的AndroidGraphics2DTutorial改名为AndroidGraphics2DTutorial1,重新创建一个类AndroidGraphics2DTutorial来显示示例列表。打算使用三个View来显示列表中的一项,一个图标(例子中随机使用了一些图标),一个文本框显示示例Activity名称,另一个文本框显示示例的具体信息。在res/layout目录下创建一个activitylist.xml。内容如下:

这次我们不从AndroidManifest.xml中读取Activity列表,而是使用String Array资源。在res/value/string.xml 中添加下列Array资源:

<string-array name=”activity_name”>
<item>Bezier</item>
<item>Brush</item>
<item>Colors</item>
<item>Font</item>
<item>Image</item>
<item>Path</item>
<item>Pen</item>
<item>Shape</item>
<item>Transform</item>
</string-array>

<string-array name=”activity_info”>
<item>Bezier</item>
<item>Pattern ,Gradients</item>
<item>Colors</item>
<item>FontDemo, FontTypes</item>
<item>DrawMap, JumbleImage, SeeThroughImage</item>
<item>Polys, Paths</item>
<item>Lines, Dashes, LineCap,LineJoin</item>
<item>Oval ,Pear ,Shape2DDemo</item>
<item>Transform</item>
</string-array>

定义了这些资源后,可以在程序中使用自定义Adapter来显示列表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
class ActivityInfo{
int iconIndex;
String activityName;
String activityInfo;
}
class ActivityInfoAdapter extends ArrayAdapter<ActivityInfo>{
int resource;
public ActivityInfoAdapter(Context context, int resourceId,
List<ActivityInfo> objects) {
super(context, resourceId, objects);
resource=resourceId;
}
@Override
public View getView(int position,View ConvertView,ViewGroup parent){
LinearLayout activityInfoView;
ActivityInfo activityInfo=getItem(position);
String activity_Name=activityInfo.activityName;
String activity_Info=activityInfo.activityInfo;
int iconIndex=activityInfo.iconIndex;
if(ConvertView==null){
activityInfoView=new LinearLayout(getContext());
String inflater=Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater vi;
vi=(LayoutInflater)getContext().getSystemService(inflater);
vi.inflate(resource, activityInfoView,true);
}else{
activityInfoView=(LinearLayout)ConvertView;
}
TextView activity_NameView
=(TextView)activityInfoView.findViewById(R.id.activityName);
TextView activity_InfoView
=(TextView)activityInfoView.findViewById(R.id.activityInfo);
ImageView iconView
=(ImageView)activityInfoView.findViewById(R.id.iconImage);
activity_NameView.setText(activity_Name);
activity_InfoView.setText(activity_Info);
iconView.setImageResource(iconIndex);
return activityInfoView;
}
}
public class AndroidGraphics2DTutorial extends ListActivity {
private ArrayList<ActivityInfo> activityInfos
=new ArrayList<ActivityInfo>();
private ActivityInfoAdapter aa;
private final static String packgeName="com.pstreets.graphics2d";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Resources res = getResources();
String[] activity_Names = res.getStringArray(R.array.activity_name);
String[] activity_Infos = res.getStringArray(R.array.activity_info);
for(int i=0;i<activity_Names.length;i++){
ActivityInfo activityInfo=new ActivityInfo();
activityInfo.activityName=activity_Names[i];
activityInfo.activityInfo=activity_Infos[i];
activityInfo.iconIndex=R.drawable.icon1+i;
activityInfos.add(activityInfo);
}
aa=new ActivityInfoAdapter(this,R.layout.activitylist,activityInfos);
setListAdapter(aa);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
ActivityInfo activityInfo = (ActivityInfo) l.getItemAtPosition(position);
Intent intent = new Intent();
intent.setClassName(this,
packgeName+".example." +activityInfo.activityName);
startActivity(intent);
}
}

类ActivityInfo定义列表每个元素的Data Model,为Activity的Icon资源ID,Activity Name以及Activity Info.

类ActivityInfoAdapter为自定义Adapter,关键的是public View getView(int position,View ConvertView,ViewGroup parent)。这个函数返回用来显示没个类别元素的View的示例。例子中为activitylist.xml 对应的Layout。

这个例子使用的列表框,自定义Adapter适用所有AdapterView,如Spinner,Gallery等。

分享到:
评论

相关推荐

    android开发教程CHM

    《Android开发教程CHM》是一本专为Android开发者设计的详尽指南,旨在帮助初学者和有经验的开发者深入理解Android平台的各个方面。这个CHM(Microsoft Compiled HTML Help)文件包含了大量的信息,使得学习和查阅...

    cwac-layouts,CWAC布局:自定义容器,简明编码.zip

    cwac-layouts,CWAC布局:自定义容器,简明编码.zip

    Android简明开发教程二十四篇及示例代码下载.pdf

    《Android简明开发教程》是一份详尽的指南,旨在帮助初学者和有经验的开发者快速掌握Android应用开发。这份教程共分为二十四篇,涵盖了Android开发的基础到高级主题,包括安装Android SDK、创建第一个应用程序、理解...

    Android 开发 简明教程 中文版

    【Android开发简明教程中文版】是一份专为初学者设计的详细教程,旨在帮助学习者快速掌握Android应用开发的基本技能。这份资料由经验丰富的教师编写,内容全面且深入浅出,适合对移动开发感兴趣的开发者或者在校学生...

    Android OpenGL ES 简明开发教程

    ### Android OpenGL ES 开发教程详解 #### 概述与历史沿革 OpenGL ES(OpenGL for Embedded Systems)作为OpenGL API的子集,专为移动设备、PDA和游戏主机等嵌入式系统设计,旨在简化3D图形应用的开发流程。自2003...

    Android OpenGL ES 简明开发教程相关源码真正的3D图形

    Android OpenGL ES 简明开发真正的3D图 Android平台提供的OpenGL ES API主要定义在包android.opengl ,javax.microedition.khronos.egl ,javax.microedition.khronos.opengles ,java.nio 等几个包中

    Android OpenGL ES 简明开发教程相关源码添加颜色

    Android OpenGL ES 简明开发教程相关源码添加颜色 简单的上色方法叫做顶点着色(Vertxt coloring),可以使用单色,也可以定义颜色渐变或者使用材质(类同于二维图形中各种Brush类型)。

    GDB简明教程 作者:张健

    《GDB简明教程》由张健撰写,主要聚焦于UNIX环境下的一款强大的C/C++调试工具——GDB。GDB,全称为GNU调试器(GNU Debugger),是GNU项目中的一个核心组件,它为程序员提供了全面的功能,以帮助他们在源代码级别上对...

    Android简明应用程序开发[原创]

    ### Android简明应用程序开发知识点概览 #### 一、Android开发环境介绍 ##### 1.1 下载与安装 - **SDK安装**:Android SDK(Software Development Kit)是开发Android应用的基础工具包,包含了编译代码所需的库文件...

    Web前端开发简明教程.pdf

    Web前端开发简明教程.pdf

    Java大学简明教程:实例程序设计.rar

    《Java大学简明教程:实例程序设计》是一本面向初学者和在校大学生的Java编程教材。这本书通过丰富的实例,深入浅出地介绍了Java语言的基础知识和应用技巧,旨在帮助读者快速掌握Java编程技能。 首先,从"Java简明...

    Android OpenGL ES 简明开发教程相关源码材质渲染

    这个“Android OpenGL ES 简明开发教程相关源码材质渲染”旨在教授如何在Android应用中利用OpenGL ES进行材质渲染,从而创建出丰富的视觉效果。 材质渲染是OpenGL ES中的关键概念,它涉及到物体表面的外观属性,如...

    Python初学教程:《简明Python教程》

    ### Python初学教程:《简明Python教程》 #### 知识点概述: 根据所提供的《简明Python教程》部分信息,我们可以归纳出一系列重要的Python基础知识和技术要点,这些内容非常适合Python初学者作为入门指南。 #### ...

    模拟电子技术基础简明教程课件:第十章 直流电源.ppt

    模拟电子技术基础简明教程课件:第十章 直流电源.ppt

    Android_OpenGL_ES_简明开发教程

    这个简明开发教程主要参考了Jayway Team Blog中关于OpenGL ES开发的教程,该教程比较通俗易懂,非常适合OpenGL ES的初学者。教程主要通过示例和步骤讲解,旨在帮助没有3D开发经验的程序员快速入门。并且,由于很多...

    JAVA大学简明教程:实例程序设计.pdf

    JAVA大学简明教程:实例程序设计.pdf

    模拟电子技术基础简明教程课件:第一章 半导体器件.ppt

    模拟电子技术基础简明教程课件:第一章 半导体器件.ppt

Global site tag (gtag.js) - Google Analytics