ListView的Adapter使用 之 初學ArrayAdapter


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。

 

我自己寫的一個例子,先上圖,再貼上代碼:

  1. package com.cz.list.demo; 
  2.  
  3. import android.app.Activity; 
  4. import android.os.Bundle; 
  5. import android.widget.ArrayAdapter; 
  6. import android.widget.ListView; 
  7.  
  8. public class ArrayListDemo extends Activity { 
  9.     private ListView listView; 
  10.     private String[] adapterData; 
  11.  
  12.     /** Called when the activity is first created. */ 
  13.     @Override 
  14.     public void onCreate(Bundle savedInstanceState) { 
  15.         super.onCreate(savedInstanceState); 
  16.         setContentView(R.layout.array_list_layout); 
  17.  
  18.         /* 找到這個listView */ 
  19.         listView = (ListView) findViewById(R.id.array_list); 
  20.  
  21.         /* 我們要在listView上面沒條顯示的數據,放到一個數組中 */ 
  22.         adapterData = new String[] { "Afghanistan", "Albania", "Algeria", 
  23.                 "American Samoa", "Andorra", "Angola", "Anguilla", 
  24.                 "Antarctica", "Antigua and Barbuda", "Argentina", "Armenia", 
  25.                 "Aruba", "Australia", "Austria", "Azerbaijan", "Bahrain", 
  26.                 "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", 
  27.                 "Benin", "Bermuda", "Bhutan", "Bolivia", 
  28.                 "Bosnia and Herzegovina", "Botswana", "Bouvet Island" }; 
  29.  
  30.         /* 這個是數組string類型的數組 */ 
  31.         // ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>
  32.         // ArrayListDemo.this, android.R.layout.simple_list_item_1, 
  33.         // adapterData); 
  34.  
  35.         /* 設置ListView的Adapter */ 
  36.         listView.setAdapter(new ArrayAdapter<String>(ArrayListDemo.this, 
  37.                 android.R.layout.simple_list_item_1, adapterData)); 
  38.     } 

代碼中寫的有注釋,我覺得要解釋的有幾點,都是很基礎的,高手就見笑了.

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);  
可以


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM