進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
1. ListView 清單方塊
onItemClick(): ListView的按一下事件 public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
ListView實例 (與Spinner類似) strings.xml先定義名稱為seasons的 string-array及其四個item: <string-array name="seasons"> <item>春</item> <item>夏</item> <item>秋</item> <item>冬</item> </string-array> 設定ListView的entries為:@array/seasons
ListView實例 使用者點選其中一個季節,會顯示季節 public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener { … protected void onCreate(Bundle savedInstanceState) { … ListView ls = (ListView) findViewById(R.id.listView); ls.setOnItemClickListener(this); } public void onItemClick(AdapterView<?> parent, View v, int position, long id){ TextView t = (TextView) findViewById(R.id.textView); TextView sel = (TextView) v; t.setText("您選擇的季節是:" + sel.getText().toString());
2. ListView複選實例 public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener { private String[] FourSeasons; private ListView ls; ….
讓ListView元件可以複選 protected void onCreate(Bundle savedInstanceState) { … //ListView ls = (ListView) findViewById(R.id.listView); 已經宣告 ls = (ListView) findViewById(R.id.listView); ls.setOnItemClickListener(this); FourSeasons =getResources().getStringArray(R.array.seasons); ArrayAdapter<String> a = new ArrayAdapter<>(this, android.R.layout.simple_list_item_multiple_choice,FourSeasons); ls.setAdapter(a); ls.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); }
判斷使用者複選ListView哪些內容 public void onItemClick(AdapterView<?> parent, View v, int position, long id){ TextView t = (TextView) findViewById(R.id.textView); TextView s = (TextView) v; String str=""; for (int i=0; i<FourSeasons.length; i++){ if (ls.isItemChecked(i)){ str+=FourSeasons[i] + "\n"; } str = "您選擇的季節是:\n" + str; t.setText(str); \n代表跳行
參考資料 施威銘主編,Android App程式設計教本之無痛起步 - 使用Android Studio開發環境,旗標出版社,2015年。 第六章 進階 UI 元件:Spinner 與 ListView 陳惠安著,新觀念 Android程式設計範例教本 - 使用Android Studio,旗標出版社,2015年。 11-2 ListView元件與ListActivity類別