Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Adapter,adapter是什麼意思

Adapter,adapter是什麼意思

編輯:關於android開發

Adapter,adapter是什麼意思


Adapter是連接後端數據和前端顯示的適配器接口,是數據和UI之間的一個重要的紐帶。在常見的View等地方都需要用到Adapter

ListView:

在這裡先介紹兩種基本的:
public ArrayAdapter(Context context,int resourceId, String[]/List<String> objects)

這裡的三個參數分別為Content:指上下文的content
resourceId:是調用的view的Id,即用來顯示item的樣式View,可以用系統也可以用自定義view
String[]/List<String>:指數據源,可以是數組也可以是集合

SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)

參數context:上下文,比如this。關聯SimpleAdapter運行的視圖上下文

參數data:Map列表,列表要顯示的數據,這部分需要自己實現,如例子中的getData(),類型要與上面的一致,每條項目要與from中指定條目一致
參數resource:ListView單項布局文件的Id,這個布局就是你自定義的布局了,你想顯示什麼樣子的布局都在這個布局中。這個布局中必須包括了to中定義的控件id
參數 from:一個被添加到Map上關聯每一個項目列名稱的列表,數組裡面是Map的鍵
參數 to:是一個int數組,數組裡面的id是自定義布局中各個控件的id,需要與上面的from對應

自定義adapter
在這裡簡單介紹下自定義SimpleAdapter2016-01-07
下面先來看一個例子:

 1 package org.mobile.tral.example.listview_baseadpter;
 2 
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.List;
 6 import java.util.Map;
 7 
 8 import android.app.Activity;
 9 import android.os.Bundle;
10 import android.widget.ListView;
11 import android.widget.TextView;
12 
13 public class MainActivity extends Activity {
14     private ListView listView;
15     private TextView textView;
16     private List<Map<String, Object>> list = null;
17 
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_main);
22         getLayoutInflater();
23         // 初始化數據
24         initData();
25         initViews();
26     }
27 
28     private void initViews() {
29         // TODO Auto-generated method stub
30         listView = (ListView) findViewById(R.id.listView_Main);
31         textView = (TextView) findViewById(R.id.textView_Main);
32         listView.setEmptyView(textView);
33         MyAdapter adapter = new MyAdapter(this, list,
34                 R.layout.item_listview_main, new String[] { "userimage",
35                         "username", "usernum" }, new int[] { R.id.userimage,
36                         R.id.textview, R.id.numview });
37 
38         listView.setAdapter(adapter);
39     }
40 
41     private void initData() {
42         // TODO Auto-generated method stub
43         list = new ArrayList<Map<String, Object>>();
44         for (int i = 1; i < 11; i++) {
45             Map<String, Object> map = new HashMap<String, Object>();
46             map.put("userimage", R.drawable.ic_launcher);
47             map.put("username", "i am " + i);
48             map.put("usernum", i);
49             list.add(map);
50         }
51     }
52 }
MyActivity
 1 package org.mobile.tral.example.listview_baseadpter;
 2 
 3 import java.util.List;
 4 import java.util.Map;
 5 
 6 import android.app.Activity;
 7 import android.view.View;
 8 import android.view.ViewGroup;
 9 import android.widget.BaseAdapter;
10 import android.widget.ImageView;
11 import android.widget.TextView;
12 
13 /**
14  * 
15  * @author Earn 實現自定義adapter
16  * 
17  */
18 public class MyAdapter extends BaseAdapter {
19 
20     private List<Map<String, Object>> list = null;
21 
22     private Activity activity;
23     private int resouseId;
24     private String form[] = null;
25     private int[] to = null;
26 
27     public MyAdapter(Activity activity, List<Map<String, Object>> list,
28             int resouseId, String[] form, int[] to) {
29         super();
30         this.list = list;
31         this.activity = activity;
32         this.resouseId = resouseId;
33         this.form = form;
34         this.to = to;
35     }
36 
37     /**
38      * 返回ListView裡面Item的數量,數據源的長度
39      */
40     @Override
41     public int getCount() {
42         // TODO Auto-generated method stub
43         return this.list.size();
44     }
45 
46     /**
47      * 返回每一個Item中映射的數據,也就是數據源的元素 position:是點擊Item的位置
48      */
49     @Override
50     public Object getItem(int position) {
51         // TODO Auto-generated method stub
52         return list.get(position);
53     }
54 
55     @Override
56     public long getItemId(int position) {
57         // TODO Auto-generated method stub
58         return position;
59     }
60 
61     /**
62      * 返回每一個Item視圖的View parent:Item的父視圖
63      */
64     @Override
65     public View getView(int position, View convertView, ViewGroup parent) {
66         // TODO Auto-generated method stub
67         //
68         View view = activity.getLayoutInflater().inflate(resouseId, parent,
69                 false);
70 
71         ImageView imageView = (ImageView) view.findViewById(to[0]);
72         TextView nameView = (TextView) view.findViewById(to[1]);
73         TextView numView = (TextView) view.findViewById(to[2]);
74 
75         int resId = (Integer) (list.get(position).get(form[0]));
76         imageView.setImageResource(resId);
77         nameView.setText((String) (list.get(position).get(form[1])));
78         numView.setText(list.get(position).get(form[2]) + "");
79         return view;
80     }
81 }

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved