Android简明开发教程十一:自定义Adapter显示列表
来源:互联网 发布:linux里面涉及到单词 编辑:程序博客网 时间:2024/05/01 08:49
在介绍数据绑定时,我们使用了系统自带的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来显示列表:
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简明开发教程十一:自定义Adapter显示列表
- Android简明开发教程十一:自定义Adapter显示列表
- Android简明开发教程十八:自定义对话框 Transform
- Android简明开发教程十八:自定义对话框 Transform
- Android简明开发教程十七:Dialog 显示图像
- Android简明开发教程十七:Dialog 显示图像
- Android简明开发教程二十一:访问Internet 绘制在线地图
- Android简明开发教程二十一:访问Internet 绘制在线地图
- Android中Spinner下拉列表(使用自定义Adapter实现,显示数据取自联系人数据库)
- Android简明开发教程一:概述
- Android简明开发教程五:Activities
- Android简明开发教程六:用户界面设计
- Android OpenGL ES 简明开发教程
- Android OpenGL ES 简明开发教程
- Android OpenGL ES 简明开发教程
- Android简明开发教程五:Activities
- Android简明开发教程六:用户界面设计
- Android OpenGL ES 简明开发教程小结
- 第七章 linux文件与目录管理
- jsp页面中导出word文档
- this.getHibernateTemplate()为null
- Jasperreport
- weblogic发布webservice项目报错
- Android简明开发教程十一:自定义Adapter显示列表
- Socket编程中用send发送结构体
- Android简明开发教程十二:引路蜂二维图形库简介及颜色示例
- SQL优化--使用内连接(inner join)代替外连接(left join,right join)
- Socket中如何设置连接超时
- Android简明开发教程十三:Option Menu 画笔示例
- 《Spring技术内幕》学习笔记12——HibernateTemplate对Hibernate的封装
- OAUTH协议简介
- 索引-基于TCP_IP和Socket的网络文件传送