Android UI 圖:java
8 ListView ListActivity SimpleAdapter ArrayAdapterandroid
列表視圖是一種能夠用來顯示長的項列表的視圖。在 Android 中,有兩種列表視圖: ListView 和 SpinnerView,二者都用於顯示長的項列表。ListView 在一個垂直滾動列表中顯示項列表。app
1)使用繼承android.app.ListActivity+ArrayAdapter方式ide
strings.xml佈局
<string-array name="array_listitem"> <item>list_item_0</item> <item>list_item_1</item> <item>list_item_2</item> <item>list_item_3</item> <item>list_item_4</item> </string-array>
ListViewActivity.javathis
public class ListViewActivity2 extends ListActivity{ // 在strings.xml文件中建立<string-array name="array_listitem"> private String[] listItems; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); //this.setContentView(R.layout.activity_listview);不須要使用layout // 獲取數據源 listItems = this.getResources().getStringArray(R.array.array_listitem); // 獲取ListView ListView listView = this.getListView(); // 設置ListView爲多選模式 listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); // ListView 設置適配器,適配器中須要數據源 this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, listItems)); } @Override protected void onListItemClick(ListView listView, View v, int position, long id) { // ListItem被點擊時事件觸發 Toast.makeText(this,listItems[position], Toast.LENGTH_SHORT).show(); } }
2)使用xml+SimpleAdapter 方式spa
layout.xmlcode
<ListView android:id="@+id/list_comp" android:layout_width="fill_parent" android:layout_height="wrap_content"/>
listview.xmlxml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/RelativeLayout01" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content"> <TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:textSize="20sp" android:id="@+id/title" /> <TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:textSize="10sp" android:layout_below="@+id/title" android:id="@+id/content" /> </RelativeLayout>
ListViewActivity繼承
public class ListViewActivity extends Activity{ // 數據源 private ArrayList<HashMap<String, Object>> listItem; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); // 設置佈局文件 this.setContentView(R.layout.activity_listview); // 獲取佈局文件中設置的ListView ListView listView = (ListView)findViewById(R.id.list_comp); // 設置多選模式 listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); // 建立數據源 listItem = new ArrayList<HashMap<String, Object>>(); for(int i=0;i<10;i++) { HashMap<String, Object> map = new HashMap<String, Object>(); map.put("title", "title_"+i); map.put("content", "content_"+i); listItem.add(map); } // 建立適配器,第二個參數是數據源, 第三個參數是xml模板、第四個與第5個參數是數據源與xml對應項配置 SimpleAdapter listItemAdapter = new SimpleAdapter(this,listItem, R.layout.listview,new String[] {"title","content"}, new int[] {R.id.title,R.id.content} ); // 設置適配器 listView.setAdapter(listItemAdapter); // 註冊點擊事件 listView.setOnItemClickListener(new ItemClickImpl()); } class ItemClickImpl implements OnItemClickListener{ @Override public void onItemClick(AdapterView<?> adapter, View arg1, int arg2, long arg3) { // ListItem 被點擊時事件被觸發 Toast.makeText(ListViewActivity.this, listItem.get(arg2).get("title").toString()+listItem.get(arg2).get("content"), Toast.LENGTH_SHORT).show(); } } }