Android中Adapter我是這么理解的,是數據和視圖之間的橋梁,數據在adapter中做處理,然后顯示到視圖上面。
Adapter有很多種,有ArrayAdapter<T>, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ListAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, SpinnerAdapter, WrapperListAdapter.
我在項目中用到過的就ArrayAdapter<T>, (數組也可以是對象數組),BaseAdapter(所有Adapter的基類),SimpleAdapter,CursorAdapter(數據來源是cursor),SimpleCursorAdapter,感覺有必要總結一下。
最基本的要數sdk官網上面給的這個代碼例子了http://developer.android.com/resources/tutorials/views/hello-listview.html。
我自己寫的一個例子,先上圖,再貼上代碼:
- package com.cz.list.demo;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.ArrayAdapter;
- import android.widget.ListView;
- public class ArrayListDemo extends Activity {
- private ListView listView;
- private String[] adapterData;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.array_list_layout);
- /* 找到這個listView */
- listView = (ListView) findViewById(R.id.array_list);
- /* 我們要在listView上面沒條顯示的數據,放到一個數組中 */
- adapterData = new String[] { "Afghanistan", "Albania", "Algeria",
- "American Samoa", "Andorra", "Angola", "Anguilla",
- "Antarctica", "Antigua and Barbuda", "Argentina", "Armenia",
- "Aruba", "Australia", "Austria", "Azerbaijan", "Bahrain",
- "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize",
- "Benin", "Bermuda", "Bhutan", "Bolivia",
- "Bosnia and Herzegovina", "Botswana", "Bouvet Island" };
- /* 這個是數組string類型的數組 */
- // ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
- // ArrayListDemo.this, android.R.layout.simple_list_item_1,
- // adapterData);
- /* 設置ListView的Adapter */
- listView.setAdapter(new ArrayAdapter<String>(ArrayListDemo.this,
- android.R.layout.simple_list_item_1, adapterData));
- }
- }
代碼中寫的有注釋,我覺得要解釋的有幾點,都是很基礎的,高手就見笑了.
1. 適配器的作用是數據和視圖之間的橋梁
2. 這個小例子是要顯示一個數組,我們就用ArrayAdapter,數組適配器,數據的數據類型<>是String類型的,數據的數據類型還可以是其他的包括對象類型的
3. ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
ArrayListDemo.this, android.R.layout.simple_list_item_1,
adapterData);
這段代碼是創建一個數組適配器的代碼,里面有三個參數,第一個參數是上下文,就是當前的Activity, 第二個參數是android sdk中自己內置的一個布局,它里面只有一個TextView,這個參數是表明我們數組中每一條數據的布局是這個view,就是將每一條數據都顯示在這個view上面;當然我們也可以自己布局,重新定義TextView的屬性,例如new.xml.則調用時變成R.layout.new。 第三個參數就是我們要顯示的數據。listView會根據這三個參數,遍歷adapterData里面的每一條數據,讀出一條,顯示到第二個參數對應的布局中,這樣就形成了我們看到的listView. 不知道剛學的同學懂了沒有...
ArrayAdapter參數不同帶來的效果不同
String[] array ={"a","b","c","d","e","f","g"};
finalArrayAdapter<String> adapter =newArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, array);
這種使用不能動態添加
String[] array ={"a","b","c","d","e","f","g"};
ArrayList<String> lst =newArrayList<String>();
lst.addAll(Arrays.asList(array));
finalArrayAdapter<String> adapter =newArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, lst);
可以