本範例程式結合 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>
沒有留言:
張貼留言