Android 第十三課——ListView ListActivity SimpleAdapter

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();
  }
 
 }
 
}
相關文章
相關標籤/搜索