本文轉自: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,仍是作個例子來實驗一下吧。