Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發學習之Adapter

Android開發學習之Adapter

編輯:關於Android編程

Adapter是指適配器的意思,在Android中,適配器扮演者重要的角色,是UI與Data實現綁定的一個橋梁。Adapter負責創建和顯示每個項目的子View和提供對下層數據的訪問。支持Adapter綁定的UI控件必須擴展AdapterView抽象類。默認情況下,Android為我們提供了下面幾種常見的數據適配器:

1、ArrayAdapter。這是一個支持綁定任意對象數組到列表的數據適配器。這個適配器默認的View綁定是一個TextView。當這個TextView被使用的時候,它將調用這個數組中每一個對象的toString()方法。如果需要選擇性地顯示數組中對象的信息,需要重寫toString()方法,來滿足定制化需求;如果需要顯示其它類型的View,需要通過重寫getView()方法來實現。

2、BaseAdapter。這是一個共同的基類的公共實現適配器,可以在同時使用的ListView(通過實現專業化 ListAdapter接口)和微調(通過實現專業化SpinnerAdapter接口)。總之,通過繼承BaseAdapter,你可以自由定制自己的數據適配。

3、SimpleAdapter。這是一個用來綁定Map類型數據的數據適配器。

4、ListAdapter。ListAdapter是一個之間的橋梁的ListView和數據備份的列表。頻繁的數據來自一個游標,但不是必需的。ListView中可以顯示,只要是包裹在一個ListAdapter任何數據。

5、CursorAdapter。CursorAdapter是用來訪問Cursor的數據適配器,要求Cursor必須包含一個名為“_id”的字段,否則這個類將無法正常工作。

6、SimpleCursorAdapter。用於將光標和在一個XML文件中定義TextViews或ImageViews實現綁定。常常用於數據庫的數據綁定。

寫這篇文章的原因是是在學習安卓的過程中,碰到了一個很詭異的問題。在郭宏志的《Android應用開發詳解》一書中,有一段代碼用於在用戶提交完數據以後跳轉到一個新的頁面(Activity)來顯示全部的提交數據,這段代碼是這樣寫的:

   super.onCreate(savedInstanceState);
        DBHelper=new DataBaseHelper(this);
        Cursor c=DBHelper.Query();
        String[] From=new String[]{DBHelper.KEYNAME,DBHelper.KEYAGE,DBHelper.KEYSEX};
        int[] To=new int[]{R.id.Layout_Name,R.id.Layout_Age,R.id.Layout_Sex};
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.layout_list, c, From, To);
        lv=getListView();
        lv.setAdapter(adapter);
但是在我實際調試的時候,每次運行到這裡都會報錯,一直不知道是什麼原因,今天偶然發現原來還有個ListAdapter類,一查原來是一個接口,而且ArrayAdapter、SimpleAdapter竟然都是這個接口的實現類。直覺告訴我,應該把前面的SimpleCursorAdapter改成ListAdapter,結果程序順利運行了。以前用這兩個類的時候,都是直接用它的實現類的,都沒什麼問題啊,為什麼這裡就不行了呢,而且更杯具的是源代碼中編譯出來的程序文件我裝手機上順利運行啊,唯一不同的是API版本不同而已啊。這讓我很郁悶,索性看了Android的API文檔,查到了上面那些內容,除非SimpleCursorAdapter和ListAdapter一點關系都沒有,否則我真的不知道是什麼原因了。唉,Java中的類怎麼這麼多啊,一點都不系統啊,記起來好麻煩,不想.NET中的類,你總知道它在什麼地方,是什麼用途。



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