2012年4月12日 星期四

[Android]ListView 範例程式

本範例程式結合 Listview 功能的六種樣式:
樣式一:android.R.layout.simple_list_item_1 (一行 text)
樣式二:android.R.layout.simple_list_item_2 (一行 text 較大,一行 text 較小)
樣式三:android.R.layout.simple_list_item_single_choice (單選)
樣式四:android.R.layout.simple_list_item_multiple_choice  (複選)
樣式五:android.R.layout.simple_list_item_checked (勾選盒+單選)
樣式六:android.R.layout.simple_list_item_checked (勾選盒+複選)


樣式一:android.R.layout.simple_list_item_1 (一行 text)

樣式二:android.R.layout.simple_list_item_2 (一行 text 較大,一行 text 較小)

樣式三:android.R.layout.simple_list_item_single_choice (單選)

樣式四:android.R.layout.simple_list_item_multiple_choice  (複選)

樣式五:android.R.layout.simple_list_item_checked (勾選盒+單選)

樣式六:android.R.layout.simple_list_item_checked (勾選盒+複選)


<ListviewButton.java>
   1: package com.android.listviewbutton;
   2:  
   3: import java.util.ArrayList;
   4: import java.util.HashMap;
   5:  
   6: import android.app.Activity;
   7: import android.os.Bundle;
   8: import android.view.View;
   9: import android.view.View.OnClickListener;
  10: import android.widget.AdapterView;
  11: import android.widget.AdapterView.OnItemClickListener;
  12: import android.widget.ArrayAdapter;
  13: import android.widget.Button;
  14: import android.widget.ListAdapter;
  15: import android.widget.ListView;
  16: import android.widget.SimpleAdapter;
  17: import android.widget.Toast;
  18:  
  19: public class ListviewButton extends Activity {
  20:     
  21:     private String selectedFromList, selectedData;
  22:     private int    selectedCount;
  23:     private Button btnSimple1, btnSimple2, btnSingleChoice, btnMultipleChoice,
  24:                    btnSingleChecked, btnMultipleChecked, btnExit;
  25:     private ListView listviewFp;
  26:     private ListAdapter laSimple1, laSingleChoice, laMultipleChoice, laSingleChecked, laMultipleChecked;
  27:     private SimpleAdapter laSimple2;
  28:     private ArrayList<HashMap<String,String>> listItem = new ArrayList<HashMap<String,String>>();
  29:     private static final String[] mCountries = new String[] {
  30:         "中華民國", "中華人民共和國", "日本", "英國",    "南韓",    "奧地利",
  31:         "義大利", "加拿大", "越南", "泰國", "馬來西亞"
  32:        };
  33:         
  34:        private static final String[] mCities = new String[] {
  35:            "臺北", "北京", "東京", "倫敦", "首爾", "維也納",
  36:            "羅馬", "渥太華", "河內", "曼谷", "吉隆坡"
  37:        };
  38:     
  39:        
  40:     /** Called when the activity is first created. */
  41:     @Override
  42:     public void onCreate(Bundle savedInstanceState) {
  43:         super.onCreate(savedInstanceState);
  44:         setContentView(R.layout.main);
  45:         findViews();
  46:         putdataIntoArray();
  47:         setListviewControls();
  48:         setListeners();
  49:     }
  50:     
  51:     private void findViews() {
  52:         btnSimple1 = (Button) findViewById(R.id.simple1Btn);
  53:         btnSimple2 = (Button) findViewById(R.id.simple2Btn);
  54:         btnSingleChoice = (Button) findViewById(R.id.singlechoiceBtn);
  55:         btnMultipleChoice = (Button) findViewById(R.id.multiplechoiceBtn);
  56:         btnSingleChecked = (Button) findViewById(R.id.singlecheckedBtn);
  57:         btnMultipleChecked = (Button) findViewById(R.id.multiplecheckedBtn);
  58:         btnExit    = (Button) findViewById(R.id.exitBtn);
  59:         listviewFp = (ListView) findViewById(R.id.fpListView);
  60:     }
  61:     
  62:     private void putdataIntoArray() {
  63:         for(int i=0; i<mCountries.length; i++){
  64:             HashMap<String,String> item = new HashMap<String,String>();
  65:             item.put( "Countries", mCountries[i]);
  66:             item.put( "Cities",mCities[i] );
  67:             listItem.add( item );
  68:         }
  69:     }
  70:     
  71:     private void setListviewControls() {
  72:         
  73:         listviewFp.setTextFilterEnabled(true);
  74:          
  75:         laSimple1 = new ArrayAdapter<String>(    this,
  76:                                                 android.R.layout.simple_list_item_1,
  77:                                                 mCountries);
  78:  
  79:         laSimple2 = new SimpleAdapter(    this, 
  80:                                         listItem,
  81:                                         android.R.layout.simple_list_item_2,
  82:                                         new String[] { "Countries","Cities" },
  83:                                         new int[] { android.R.id.text1, android.R.id.text2 } );
  84:  
  85:         laSingleChoice = new ArrayAdapter<String>(    this,
  86:                                                      android.R.layout.simple_list_item_single_choice,
  87:                                                      mCountries);
  88:         
  89:         laMultipleChoice = new ArrayAdapter<String>( this,
  90:                                                      android.R.layout.simple_list_item_multiple_choice,
  91:                                                      mCountries);
  92:         
  93:         laSingleChecked = new ArrayAdapter<String>(    this,
  94:                                                     android.R.layout.simple_list_item_checked,
  95:                                                     mCountries);
  96:         
  97:         laMultipleChecked = new ArrayAdapter<String>(    this,
  98:                                                         android.R.layout.simple_list_item_checked,
  99:                                                         mCountries);
 100:         
 101:     }
 102:     
 103:     private void setListeners() {
 104:         btnSimple1.setOnClickListener(new View.OnClickListener() {
 105:             public void onClick(View v) {
 106:                 listviewFp.setAdapter(laSimple1);
 107:                 listviewFp.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
 108:             }
 109:          });
 110:   
 111:         btnSimple2.setOnClickListener(new View.OnClickListener() {
 112:             public void onClick(View v) {
 113:                 listviewFp.setAdapter(laSimple2);
 114:                 listviewFp.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
 115:             }
 116:          });
 117:         
 118:         btnSingleChoice.setOnClickListener(new View.OnClickListener() {
 119:             public void onClick(View v) {
 120:                 listviewFp.setAdapter(laSingleChoice);
 121:                 listviewFp.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
 122:             }
 123:          });
 124:  
 125:         btnMultipleChoice.setOnClickListener(new View.OnClickListener() {
 126:             public void onClick(View v) {
 127:                 listviewFp.setAdapter(laMultipleChoice);
 128:                 listviewFp.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
 129:             }
 130:          });
 131:  
 132:         btnSingleChecked.setOnClickListener(new View.OnClickListener() {
 133:             public void onClick(View v) {
 134:                 listviewFp.setAdapter(laSingleChecked);
 135:                 listviewFp.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
 136:             }
 137:          });
 138:  
 139:         btnMultipleChecked.setOnClickListener(new View.OnClickListener() {
 140:             public void onClick(View v) {
 141:                 listviewFp.setAdapter(laMultipleChecked);
 142:                 listviewFp.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
 143:             }
 144:          });
 145:         
 146:         btnExit.setOnClickListener(new OnClickListener(){
 147:             public void onClick(View v) {
 148:                 android.os.Process.killProcess(android.os.Process.myPid());
 149:             }
 150:         });
 151:         
 152:         listviewFp.setOnItemClickListener(new OnItemClickListener() {  
 153:             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
 154:                 selectedFromList = arg0.getItemAtPosition(arg2).toString();
 155:                 if (listviewFp.isItemChecked(arg2))
 156:                 {
 157:                     setTitle("點擊第"+(arg2+1)+"個項目:"+selectedFromList);
 158:                 }
 159:                 else
 160:                 {
 161:                     setTitle("取消第"+(arg2+1)+"個項目:"+selectedFromList);
 162:                 }
 163:                 showSelectedResults();
 164:             }
 165:         });  
 166:     }
 167:     
 168:     
 169:     private void showSelectedResults(){
 170:         selectedData = "";
 171:         selectedCount = 0;
 172:          for(int i=0;i< listviewFp.getAdapter().getCount();i++)
 173:         {
 174:             if (listviewFp.isItemChecked(i))
 175:             {
 176:                 selectedData += mCountries[i]+",";
 177:                 selectedCount ++;
 178:             }
 179:         }
 180:         Toast.makeText(this, "總共選取"+selectedCount+"個項目..."+selectedData, 3000).show();
 181:     }
 182:  
 183: }

<main.xml>
   1: <?xml version="1.0" encoding="utf-8"?>
   2: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   3:     android:layout_width="fill_parent"
   4:     android:layout_height="fill_parent"
   5:     android:orientation="vertical" >
   6:  
   7:     <TextView
   8:         android:id="@+id/textView1"
   9:         android:layout_width="match_parent"
  10:         android:layout_height="wrap_content"
  11:         android:gravity="center_horizontal"
  12:         android:text="@string/strListview"
  13:         android:textSize="20sp" />
  14:  
  15:     <LinearLayout
  16:         android:id="@+id/linearLayout1"
  17:         android:layout_width="match_parent"
  18:         android:layout_height="wrap_content" >
  19:  
  20:         <Button
  21:             android:id="@+id/simple1Btn"
  22:             android:layout_width="wrap_content"
  23:             android:layout_height="wrap_content"
  24:             android:text="@string/strSimple1" />
  25:  
  26:         <Button
  27:             android:id="@+id/simple2Btn"
  28:             android:layout_width="wrap_content"
  29:             android:layout_height="wrap_content"
  30:             android:text="@string/strSimple2" />
  31:  
  32:     </LinearLayout>
  33:  
  34:     <LinearLayout
  35:         android:id="@+id/linearLayout2"
  36:         android:layout_width="match_parent"
  37:         android:layout_height="wrap_content" >
  38:  
  39:         <Button
  40:             android:id="@+id/singlechoiceBtn"
  41:             android:layout_width="wrap_content"
  42:             android:layout_height="wrap_content"
  43:             android:text="@string/strSingleChoice" />
  44:  
  45:         <Button
  46:             android:id="@+id/multiplechoiceBtn"
  47:             android:layout_width="wrap_content"
  48:             android:layout_height="wrap_content"
  49:             android:text="@string/strMultipleChoice" />
  50:  
  51:         <Button
  52:             android:id="@+id/singlecheckedBtn"
  53:             android:layout_width="wrap_content"
  54:             android:layout_height="wrap_content"
  55:             android:text="@string/strSingleChecked" />
  56:  
  57:         <Button
  58:             android:id="@+id/multiplecheckedBtn"
  59:             android:layout_width="wrap_content"
  60:             android:layout_height="wrap_content"
  61:             android:text="@string/strMultipleChecked" />
  62:  
  63:         <Button
  64:             android:id="@+id/exitBtn"
  65:             android:layout_width="wrap_content"
  66:             android:layout_height="wrap_content"
  67:             android:text="@string/strExit" />
  68:  
  69:     </LinearLayout>
  70:  
  71:     <ListView
  72:         android:id="@+id/fpListView"
  73:         android:layout_width="match_parent"
  74:         android:layout_height="wrap_content" >
  75:  
  76:     </ListView>
  77:  
  78: </LinearLayout>

<strings.xml>
   1: <?xml version="1.0" encoding="utf-8"?>
   2: <resources>
   3:  
   4:     <string name="hello">Hello World, ListviewButton!</string>
   5:     <string name="app_name">ListviewButton</string>
   6:     <string name="strListview">【請選擇 Listview 樣式按鈕】</string>
   7:     <string name="strSimple1">simple_list_item_1</string>
   8:     <string name="strSimple2">simple_list_item_2</string>
   9:     <string name="strSingleChoice">單選</string>
  10:     <string name="strMultipleChoice">多選</string>
  11:     <string name="strExit">離開</string>
  12:     <string name="strSingleChecked">單選勾選盒</string>
  13:     <string name="strMultipleChecked">複選勾選盒</string>
  14:  
  15: </resources>

沒有留言:

張貼留言