2009/11/10

Android 另一種單選 OR 多選的物件 - ListView 範例

Android 除了提供 CheckBox (多選) 與 RadioButton (單選) 的物件之外,

還提供另一種更為方便且表現多樣化的物件 - ListView,


第一種方式:繼承 Activity 的程式範例

 程式碼
public class helloAndroid extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// 資料陣列
String[] vData = {"足球","棒球","籃球"};

// 建立 ListView 物件
ListView lv = new ListView(this);

// 設定 ListView 選擇的方式 :
// 單選 : ListView.CHOICE_MODE_SINGLE
// 多選 : ListView.CHOICE_MODE_MULTIPLE

lv.setChoiceMode( ListView.CHOICE_MODE_SINGLE );

// 陣列接收器
// RadioButton Layout 樣式 : android.R.layout.simple_list_item_single_choice
// CheckBox Layout 樣式 : android.R.layout.simple_list_item_multiple_choice

ArrayAdapter vArrayData = new ArrayAdapter(
this
, android.R.layout.simple_list_item_single_choice
, vData
);

// 設定 ListView 的接收器, 做為選項的來源
lv.setAdapter( vArrayData );

// ListView 設定為 ContentView
setContentView(lv);
}
}



第二種方式:繼承 ListActivity 的程式範例

 程式碼
// 由繼承 Activity 改成 ListActivity
public class helloAndroid extends ListActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// 資料陣列
String[] vData = { "足球","棒球","籃球" };

// 建立 ListView 物件
ListView lv = this.getListView();

// 設定 ListView 選擇的方式 :
// 單選 : ListView.CHOICE_MODE_SINGLE
// 多選 : ListView.CHOICE_MODE_MULTIPLE

lv.setChoiceMode( ListView.CHOICE_MODE_SINGLE );

// ListView 的選項來源由 陣列 提供
// RadioButton Layout 樣式 : android.R.layout.simple_list_item_single_choice
// CheckBox Layout 樣式 : android.R.layout.simple_list_item_multiple_choice

this.setListAdapter( new ArrayAdapter( this
, android.R.layout.simple_list_item_single_choice
, vData
));
}
}



範例結果

單選 + RadioButton 樣式 :


單選 + CheckBox 樣式 :


多選 + RadioButton 樣式 :


多選 + CheckBox 樣式 :