歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android開發學習之Adapter(數據適配器)

1.定義

    數據適配器是AdapterView視圖(如ListView - 列表視圖控件、Gallery - 縮略圖浏覽器控件、GridView - 網格控件、Spinner - 下拉列表控件、AutoCompleteTextView - 自動提示文本框、ExpandableListView - 支持展開/收縮功能的列表控件等)與數據之間的橋梁,用來處理數據並將數據綁定到AdapterView上。

2.作用

   數據適配器是連接數據源和視圖界面的橋梁。

3.分類

    包括ArrayAdapter(數組適配器)以及SimpleAdapter(簡單適配器)。其中:

  1. ArrayAdapter用於綁定格式相對單一的數據,數據源主要是集合或者數組;
  2. SimpleAdapter用於綁定格式復雜的數據,數據源只能是泛型的集合;

4.實現

  1. 新建適配器;
  2. 添加數據源到適配器;
  3. 視圖加載適配器;

5.案例

(1)具體用到的類:

  1. ArrayAdapter(上下文,當前ListView加載的每一個列表所對應的布局文件,數據源)
  2. SimpleAdapter(context,data,resource,from,to)其中,context:上下文,data數據源(List<? extends Map<String,?>> data)一個Map所組成的List集合) 每一個Map都會去對應ListView列表中的一行 每一個Map(鍵-值對)中的鍵必須包含所有在from中所指定的鍵,resource:列表項的布局文件ID,from:Map中的鍵名(String[]格式),to:綁定數據視圖中的ID,與from成對應關系(int[]格式);

(2)代碼實例:

  • ArrayAdapter

ListView listView;
    ArrayAdapter arrayAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_violet);
        listView = (ListView) findViewById(R.id.listView);
        String[] data={"蘋果","香蕉","桃子","西瓜"};
        arrayAdapter=new ArrayAdapter(this,R.layout.abc_simple_dropdown_hint,data);//上下文,當前ListView加載的每一個列表所對應的布局文件,數據源)
        listView.setAdapter(arrayAdapter);
}

  • SimpleAdapter

ListView listView;
    SimpleAdapter simpleAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_violet);
        listView = (ListView) findViewById(R.id.listView);
        List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
        String[] persons = {"張老師", "陳老師", "李老師", "黃老師"};
        String[] phoneNums = {"18706218201", "18706214521", "13908761231", "18512390812"};
        for (int i = 0; i < persons.length; i++) {
            HashMap<String, Object> map = new HashMap<String, Object>();
            map.put("username", persons[i]);
            map.put("phoneNum", phoneNums[i]);
            //插入圖片
            map.put("photo",R.drawable.cc);
            data.add(map);
        }
        //(context,data,resource,from,to)
        simpleAdapter = new SimpleAdapter(this, data, R.layout.list_item, new String[]{"username","photo", "phoneNum"}, new int[]{R.id.username,R.id.photo, R.id.phoneNum});
        listView.setAdapter(simpleAdapter);
    }

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved