android 的listactivity


本文轉自:http://android.tgbus.com/ 


今天學習點輕鬆的內容吧,看看android.app包裏的幾個類。首先是這個在平臺自的例子中被普遍使用的ListActivity。這個類其實就是一個含有一個ListView組件的Activity類。也就是說,若是咱們直接在一個普通的Activity中本身加一個ListView也是徹底能夠取代這個ListActivity的,只是它更方便而已,方便到什麼程度呢?來作個例子瞧瞧。 
public class HelloTwoB extends ListActivity 
...{   
    public void onCreate(Bundle icicle) ...{ 
        super.onCreate(icicle); 
        setTheme(android.R.style.Theme_Dark); 
        setContentView(R.layout.mainb); 
        
        List<String> items = fillArray();        
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.list_row,items); 
               
        this.setListAdapter(adapter); 
    } 
    private List<String> fillArray() 
    ...{ 
        List<String> items = new ArrayList<String>(); 
        items.add("日曜日"); 
        items.add("月曜日"); 
        items.add("火曜日"); 
        items.add("水曜日"); 
        items.add("木曜日"); 
        items.add("金曜日"); 
        items.add("土曜日"); 
        return items; 
    } 
   
    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) 
    ...{ 
        TextView txt = (TextView)this.findViewById(R.id.text); 
        txt.setText("あすは "+l.getSelectedItem().toString()+"です。"); 
    } 

的確能夠簡單到只需準備一個List對象並藉助Adapter就能夠構造出一個列表。重載onListItemClick方法能夠響應選擇事件,利用第一個參數能夠訪問到這個ListView實例以獲得選中的條目信息。這裏有一點要說明的,就是若是更簡單的話,其實連那個setContentView均可以不要了,Android也會自動幫咱們構造出一個全屏的列表。可是本例中咱們須要一個TextView來顯示選中的條目,因此咱們須要一個layout.mainb描述一下這個列表窗口。 

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<TextView id="@+id/text" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="" 
    /> 
<ListView id="@id/android:list" 
    android:layout_width="fill_parent" 
    android:layout_height="0dip" 
    android:layout_weight="1" 
    android:drawSelectorOnTop="false" 
    /> 
</LinearLayout> 
這裏須要注意的是那個ListView的ID,是系統自定義的android:list,不是咱們隨便取的,不然系統會說找不到它想要的listview了。而後,在這個listview以外,咱們又增長了一個TextView,用來顯示選中的條目。 
再來講說這裏用到的ArrayAdapter,它的構造函數中第二個參數是一個資源ID,ArrayAdapter的API文檔中說是要求用一個包含 TextView的layout文件,平臺用它來顯示每一個選擇條目的樣式,這裏的取值是R.layout.list_row,因此,咱們還有一個list_row.xml文件來描述這個佈局,至關簡單。 

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<TextView id="@+id/item" 
          xmlns:android="http://schemas.android.com/apk/res/android" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content"/> 
<TextView id="@+id/item2" 
          xmlns:android="http://schemas.android.com/apk/res/android" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content"/> 
</LinearLayout> 
從ArrayAdapter上溯到BaseAdapter,發現還有幾個同源的Adapter也應該可使用,象SimpleAdapter和CursorAdapter,仍是作個例子來實驗一下吧。
相關文章
相關標籤/搜索