日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Android開發(fā)速成簡(jiǎn)潔教程十一:自定義Adapter顯示列表

在介紹數(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資源:

 
 
 
 
  1.        
  2.   Bezier       
  3.   Brush       
  4.   Colors       
  5.   Font 
  6.   Image
  7.   Path
  8.   Pen
  9.   Shape 
  10.   Transform
  11.  
  12.  
  13.         
  14.   Bezier       
  15.   Pattern ,Gradients       
  16.   Colors       
  17.   FontDemo, FontTypes 
  18.   DrawMap, JumbleImage, SeeThroughImage
  19.   Polys, Paths
  20.   Lines, Dashes, LineCap,LineJoin
  21.   Oval ,Pear ,Shape2DDemo 
  22.   Transform
  23.  

定義了這些資源后,可以在程序中使用自定義Adapter來(lái)顯示列表:

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

類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