1. 程式人生 > >適配ListView的幾種常見Adapter的用法總結

適配ListView的幾種常見Adapter的用法總結

1. BaseAdapter

(1)用法

它是所有Adapter的父類,是一個通用的基礎Adapter,繼承它時必須複寫四個方法 :getCount(), getItem(), getItemId()和getView。

(2)優點

可以實現幾乎所有功能。自由性更高。可以實現帶有Button控制元件的ListView。

(3)缺點

由於它是一個抽象類,在繼承它時時需要複寫四個方法,繁瑣。

(4)建構函式

BaseAdapter() ,一般根據需要,自己複寫建構函式。

(5)重要知識點

ListView的使用中,有時候還需要在裡面加入Button等控制元件,實現單獨的操作。也就是說,這個
ListView不再只是展示資料,也不僅僅是這一行要來處理使用者的操作,而是裡面的控制元件要獲得使用者的焦點。我們可以試試用SimpleAdapter新增一個Button到ListView的條目中,會發現可以新增,但是卻無法獲得焦點,點選操作被ListViewItem所覆蓋,,無法響應Button點選事件。這時候最方便的方法就是使用靈活的介面卡BaseAdapter了。

2. ArrayAdapter

(1)用法

用來繫結一個數組,支援泛型操作。一般需要根據情況複寫getView()方法。

(2)優點

使用簡單

(3)缺點

只能處理簡單的文字,或者帶固定影象的文字

(4)建構函式

ArrayAdapter(Context context, int textViewResourceId, List<T> objects) 第一個引數: 當前Context例項 第二個引數:必須包含TextView控制元件的子佈局檔案 第三個引數:資料來源

(5)簡單舉例:只顯示文字的ListView

   public class MyListView extends Activity {
    
       private ListView listView;
       //private List<String> data = new ArrayList<String>();
       @Override
       public void onCreate(Bundle savedInstanceState){
           super.onCreate(savedInstanceState);
            
           listView = new ListView(this);
           listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData()));
           setContentView(listView);
       }
        
        
        
       private List<String> getData(){
            
           List<String> data = new ArrayList<String>();
           data.add("Apple");
           data.add("Banana");
           data.add("Grape");
           data.add("Watermelon");
            
           return data;
       }
   }


3. SimpleAdapter

(1)用法

一般實現它的Activity可以直接繼承ListActivity, 它和Activity沒有太大區別,只是對顯示ListView做了優化而已。無需複寫getView()方法

(2)優點

擴充套件性最好,可以定義各種各樣的佈局出來,可以放上ImageView(圖片),還可以放上Button(按鈕),CheckBox(複選框)等等;

(3)缺點

資料來源複雜。simpleAdapter的資料來源用一般都是HashMap構成的List,list的每一節對應ListView的每一item;

(4)建構函式

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

引數context:系統上下文環境; 引數data:由HashMap組成的List,也就是資料來源; 引數resource:ListView的子佈局檔案(R.layout.item_list_view); 引數from:HashMap中的key; 引數to: HashMap中key對應的value要顯示在佈局中的位置的資源id

4. SimpleCursorAdapter

待更新

 資料參考: