新聞中心
在介紹數(shù)據(jù)綁定時(shí),我們使用了系統(tǒng)自帶的SimpleAdapter。Android 允許自定義Adapter ,理論上可以使用任意的View(Layout)來(lái)顯示數(shù)據(jù)。下圖是對(duì)AndroidGraphics2DTutorial做改動(dòng),使用自定義 Adapter來(lái)顯示示例Activity列表。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比漢源網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式漢源網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋漢源地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
在例子中我們把原來(lái)的AndroidGraphics2DTutorial改名為AndroidGraphics2DTutorial1,重新創(chuàng)建一個(gè)類AndroidGraphics2DTutorial來(lái)顯示示例列表。打算使用三個(gè)View來(lái)顯示列表中的一項(xiàng),一個(gè)圖標(biāo)(例子中隨機(jī)使用了一些圖 標(biāo)),一個(gè)文本框顯示示例Activity名稱,另一個(gè)文本框顯示示例的具體信息。在res\layout目錄下創(chuàng)建一個(gè) activitylist.xml。內(nèi)容如下:
這次我們不從AndroidManifest.xml中讀取Activity列表,而是使用String Array資源。在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
- Oval ,Pear ,Shape2DDemo
- Transform
定義了這些資源后,可以在程序中使用自定義Adapter來(lái)顯示列表:
- class ActivityInfo{
- int iconIndex;
- String activityName;
- String activityInfo;
- }
- class ActivityInfoAdapter extends ArrayAdapter
{ - int resource;
- public ActivityInfoAdapter(Context context, int resourceId,
- List
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
activityInfos - =new ArrayList
(); - 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
- 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定義列表每個(gè)元素的Data Model,為Activity的Icon資源ID,Activity Name以及Activity Info.
類ActivityInfoAdapter為自定義Adapter,關(guān)鍵的是public View getView(int position,View ConvertView,ViewGroup parent)。這個(gè)函數(shù)返回用來(lái)顯示沒(méi)個(gè)類別元素的View的示例。例子中為activitylist.xml 對(duì)應(yīng)的Layout。
這個(gè)例子使用的列表框,自定義Adapter適用所有AdapterView,如Spinner,Gallery等。
當(dāng)前名稱:Android開發(fā)速成簡(jiǎn)潔教程十一:自定義Adapter顯示列表
標(biāo)題路徑:http://www.dlmjj.cn/article/dhsggeo.html


咨詢
建站咨詢
