在介绍数据绑定的时候,我们使用了系统自带的SimpleAdapter。Android允许自定义Adapter,理论上可以使用任何View(Layout)来显示数据。下图是对AndroidGraphics2DTutorial进行改动,使用自定义的Adapter来显示示例Activity列表。在示例中,我们将原来的AndroidGraphics2DTutorial重命名为AndroidGraphics2DTutorial1,并重新创建一个类AndroidGraphics2DTutorial来显示示例列表。打算用三个View显示列表中的一个item,一个icon(例子中随机使用了一些icon),一个textbox显示exampleActivity的名称,另一个textbox显示具体的信息这个例子。在res\layout目录下创建一个activitylist.xml。内容如下:这次我们不从AndroidManifest.xml中读取Activity列表,而是使用StringArray资源。在res\value\string.xml中添加以下Array资源:- Bezier
- Brush
- Colors
- Font
- Image
- Path
- Pen
- Shape
- Transform
- Bezier
- Pattern,Gradients
- Colors
- FontDemo,FontTypes
- DrawMap,JumbleImage,SeeThroughImage
- Polys,Paths
- Lines,Dashes,LineCap,LineJoin
- 椭圆形,梨形,Shape2DDemo
- 变换
item>定义好这些资源后,可以在程序中使用自定义的Adapter来显示列表:classActivityInfo{inticonIndex;StringactivityName;StringactivityInfo;}classActivityInfoAdapterextendsArrayAdapter{intresource;publicActivityInfoAdapter(Contextcontext,intresourceId,Listobjects){super(context,resourceId,objects);resource=resourceId;}@OverridepublicViewgetView(intposition,ViewConvertView,ViewGroupparent){LinearLayoutactivityInfoView;ActivityInfoactivityInfo=getItem(位置);Stringactivity_Name=activityInfo.activityName;Stringactivity_Info=activityInfo.activityInfo;inticonIndex=activityInfo.iconIndex;if(ConvertView==null){activityInfoView=newLinearLayout(getContext());Stringinflater=Context.LAYOUT_INFLATER_SERVICE;LayoutInflatervi;vi=(LayoutInflater)getContext().getSystemService(inflater);vi.inflate(resource,activityInfoView,true);}else{activityInfoView=(LinearLayout)ConvertView;}TextViewactivity_NameView=(TextView)activityInfoView.findViewById(R.id.activityName);TextViewactivity_InfoView=(TextView)activityInfoView.findViewById(R.id.activityInfo);ImageViewiconView=(ImageView)活动信息查看.findViewById(R.id.iconImage);activity_NameView.setText(activity_Name);activity_InfoView.setText(activity_Info);iconView.setImageResource(iconIndex);returnactivityInfoView;}}publicclassAndroidGraphics2DTutorialextendsListActivity{privateArrayListactivityInfos=newArrayList();privateActivityInfoAdaptera;privatefinalstaticStringpackgeName="com.pstreets.graphics2d";@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);Resourcesres=getResources();String[]activity_Names=res.getStringArray(R.array.activity_name);String[]activity_Infos=res.getStringArray(R.array.activity_info);for(inti=0;i