1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
< LinearLayout ?xmlns:android = "http://schemas.android.com/apk/res/android"
???? xmlns:tools = "http://schemas.android.com/tools"
???? android:layout_width = "match_parent"
???? android:layout_height = "match_parent"
???? android:orientation = "vertical" ?>
?
???? < Button
???????? android:layout_width = "match_parent"
???????? android:layout_height = "wrap_content"
???????? android:gravity = "center"
???????? android:onClick = "showSelectAuthors"
???????? android:text = "@string/select_authors"
???????? android:textSize = "25sp" ?/>
?
???? < ListView
???????? android:id = "@+id/list"
???????? android:layout_width = "match_parent"
???????? android:layout_height = "match_parent"
???????? android:choiceMode = "multipleChoice" ?/>
?
</ LinearLayout >
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
package ?com.example.choicelistviewtest2;
?
import ?android.app.Activity;
import ?android.os.Bundle;
import ?android.view.View;
import ?android.widget.ArrayAdapter;
import ?android.widget.ListView;
import ?android.widget.Toast;
?
public ?class ?RadioButtonListActivity? extends ?Activity?{
?
???? private ?ListView?radioButtonList;
???? private ?String[]?names?=? new ?String[]?{? "芥川龙之介" ,? "三岛由纪夫" ,? "川端康成" ,? "村上春树" ,
???????????? "东野圭吾" ,? "张爱玲" ,? "金庸" ,? "钱钟书" ,? "老舍" ,? "梁实秋" ,? "亨利米勒" ,? "海明威" ,? "菲兹杰拉德" ,
???????????? "凯鲁亚克" ,? "杰克伦敦" ,? "小仲马" ,? "杜拉斯" ,? "福楼拜" ,? "雨果" ,? "巴尔扎克" ,? "莎士比亚" ,? "劳伦斯" ,
???????????? "毛姆" ,? "柯南道尔" ,? "笛福" ?};
?
???? @Override
???? protected ?void ?onCreate(Bundle?savedInstanceState)?{
???????? super .onCreate(savedInstanceState);
???????? setContentView(R.layout.activity_main);
?
???????? radioButtonList?=?(ListView)?findViewById(R.id.list);
???????? ArrayAdapter<String>?adapter?=? new ?ArrayAdapter<String>( this ,
???????????????? android.R.layout.simple_list_item_multiple_choice,?names);
???????? radioButtonList.setAdapter(adapter);
???? }
?
???? public ?void ?showSelectAuthors(View?v)?{
???????? long []?authorsId?=?radioButtonList.getCheckItemIds();
?
???????? String?name?=? "" ;
???????? String?message;
???????? if ?(authorsId.length?>? 0 )?{
???????????? //?用户至少选择了一位作家
???????????? for ?( int ?i?=? 0 ;?i?<?authorsId.length;?i++)?{
???????????????? name?+=? "," ?+?names[( int )?authorsId[i]];
???????????? }
???????????? //?将第一个作家前面的“,”去掉
???????????? message?=?name.substring( 1 );
???????? }? else ?{
???????????? message?=? "请至少选择一位作家!" ;
???????? }
???????? Toast.makeText(RadioButtonListActivity. this ,?message,?Toast.LENGTH_LONG)
???????????????? .show();
???? }
?
} |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
package ?com.example.choicelistviewtest3;
?
import ?android.content.Context;
import ?android.view.View;
import ?android.view.ViewGroup;
import ?android.widget.BaseAdapter;
?
public ?class ?RadioAdapter? extends ?BaseAdapter?{
?
???? private ?String[]?authors;
???? private ?Context?c;
?
???? public ?RadioAdapter(Context?c,?String[]?authors)?{
???????? super ();
???????? this .c?=?c;
???????? this .authors?=?authors;
???? }
?
???? @Override
???? public ?int ?getCount()?{
???????? return ?authors.length;
???? }
?
???? @Override
???? public ?Object?getItem( int ?arg0)?{
???????? return ?null ;
???? }
?
???? @Override
???? public ?long ?getItemId( int ?arg0)?{
???????? //返回每一条Item的Id
???????? return ?arg0;
???? }
?
???? @Override
???? public ?boolean ?hasStableIds()?{
???????? //getCheckedItemIds()方法要求此处返回为真
???????? return ?true ;
???? }
???? @Override
???? public ?View?getView( int ?arg0,?View?arg1,?ViewGroup?arg2)?{
?
???????? ChoiceListItemView?choiceListItemView?=? new ?ChoiceListItemView(c,? null );
???????? choiceListItemView.setName(authors[arg0]);
???????? return ?choiceListItemView;
???? }
?
} |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
package ?com.example.choicelistviewtest3;
?
import ?android.content.Context;
import ?android.util.AttributeSet;
import ?android.view.LayoutInflater;
import ?android.view.View;
import ?android.widget.CheckBox;
import ?android.widget.Checkable;
import ?android.widget.LinearLayout;
import ?android.widget.TextView;
?
public ?class ?ChoiceListItemView? extends ?LinearLayout? implements ?Checkable?{
?
???? private ?TextView?nameTxt;
???? private ?CheckBox?selectBtn;
???? public ?ChoiceListItemView(Context?context,?AttributeSet?attrs)?{
???????? super (context,?attrs);
?
???????? LayoutInflater?inflater?=?LayoutInflater.from(context);
???????? View?v?=?inflater.inflate(R.layout.item_list,? this ,? true );
???????? nameTxt?=?(TextView)?v.findViewById(R.id.author);
???????? selectBtn?=?(CheckBox)?v.findViewById(R.id.radio);
???? }
?
???? public ?void ?setName(String?text)?{
???????? nameTxt.setText(text);
???? }
?
???? @Override
???? public ?boolean ?isChecked()?{
???????? return ?selectBtn.isChecked();
???? }
?
???? @Override
???? public ?void ?setChecked( boolean ?checked)?{
???????? selectBtn.setChecked(checked);
???? }
?
???? @Override
???? public ?void ?toggle()?{
???????? selectBtn.toggle();
???? }
?
} |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
< RelativeLayout ?xmlns:android = "http://schemas.android.com/apk/res/android"
???? xmlns:tools = "http://schemas.android.com/tools"
???? android:layout_width = "match_parent"
???? android:layout_height = "wrap_content"
???? android:background = "#fff"
???? android:orientation = "horizontal" ?>
?
???? < TextView
???????? android:id = "@+id/author"
???????? android:layout_width = "wrap_content"
???????? android:layout_height = "wrap_content"
???????? android:layout_alignParentLeft = "true"
???????? android:layout_centerVertical = "true"
???????? android:padding = "10dp"
???????? android:textSize = "20sp" ?/>
??? ????? < CheckBox
???????? android:id = "@+id/radio"
???????? android:layout_width = "wrap_content"
???????? android:layout_height = "wrap_content"
???????? android:layout_alignParentRight = "true"
???????? android:layout_centerVertical = "true"
???????? android:layout_gravity = "center_vertical"
???????? android:clickable = "false"
???????? android:focusable = "false"
???????? android:focusableInTouchMode = "false"
???????? android:padding = "10dp" ?/>
?
</ RelativeLayout >
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package ?com.example.choicelistviewtest3;
?
import ?android.app.Activity;
import ?android.os.Bundle;
import ?android.view.View;
?
import ?android.widget.ListView;
import ?android.widget.Toast;
?
public ?class ?RadioButtonListActivity? extends ?Activity?{
?
???? private ?ListView?radioButtonList;
???? private ?RadioAdapter?adapter;
???? private ?String[]?authors?=? new ?String[]?{? "芥川龙之介" ,? "三岛由纪夫" ,? "川端康成" ,? "村上春树" ,
???????????? "东野圭吾" ,? "张爱玲" ,? "金庸" ,? "钱钟书" ,? "老舍" ,? "梁实秋" ,? "亨利米勒" ,? "海明威" ,? "菲兹杰拉德" ,
???????????? "凯鲁亚克" ,? "杰克伦敦" ,? "小仲马" ,? "杜拉斯" ,? "福楼拜" ,? "雨果" ,? "巴尔扎克" ,? "莎士比亚" ,? "劳伦斯" ,
???????????? "毛姆" ,? "柯南道尔" ,? "笛福" ?};
?
???? @Override
???? protected ?void ?onCreate(Bundle?savedInstanceState)?{
???????? super .onCreate(savedInstanceState);
???????? setContentView(R.layout.activity_radio_button_list);
?
???????? radioButtonList?=?(ListView)?findViewById(R.id.list);
???????? adapter?=? new ?RadioAdapter( this ,?authors);
???????? radioButtonList.setAdapter(adapter);
???? }
?
???? public ?void ?showSelectAuthors(View?v)?{
???????? long []?authorsId?=?radioButtonList.getCheckedItemIds();
???????? String?name?=? "" ;
???????? String?message;
???????? if ?(authorsId.length?>? 0 )?{
???????????? //?用户至少选择了一位作家
???????????? for ?( int ?i?=? 0 ;?i?<?authorsId.length;?i++)?{
???????????????? name?+=? "," ?+?authors[( int )?authorsId[i]];
???????????? }
???????????? //?将第一个作家前面的“,”去掉
???????????? message?=?name.substring( 1 );
???????? }? else ?{
???????????? message?=? "请至少选择一位作家!" ;
???????? }
???????? Toast.makeText(RadioButtonListActivity. this ,?message,?Toast.LENGTH_LONG)
???????????????? .show();
???? }
} |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
package ?com.example.choicelistviewtest2;
?
import ?android.app.Activity;
import ?android.os.Bundle;
import ?android.view.View;
import ?android.widget.ArrayAdapter;
import ?android.widget.ListView;
import ?android.widget.Toast;
?
public ?class ?RadioButtonListActivity? extends ?Activity?{
?
???? private ?ListView?radioButtonList;
???? private ?String[]?names?=? new ?String[]?{? "芥川龙之介" ,? "三岛由纪夫" ,? "川端康成" ,? "村上春树" ,
???????????? "东野圭吾" ,? "张爱玲" ,? "金庸" ,? "钱钟书" ,? "老舍" ,? "梁实秋" ,? "亨利米勒" ,? "海明威" ,? "菲兹杰拉德" ,
???????????? "凯鲁亚克" ,? "杰克伦敦" ,? "小仲马" ,? "杜拉斯" ,? "福楼拜" ,? "雨果" ,? "巴尔扎克" ,? "莎士比亚" ,? "劳伦斯" ,
???????????? "毛姆" ,? "柯南道尔" ,? "笛福" ?};
?
???? @Override
???? protected ?void ?onCreate(Bundle?savedInstanceState)?{
???????? super .onCreate(savedInstanceState);
???????? setContentView(R.layout.activity_main);
?
???????? radioButtonList?=?(ListView)?findViewById(R.id.list);
???????? ArrayAdapter<String>?adapter?=? new ?ArrayAdapter<String>( this ,
???????????????? android.R.layout.simple_list_item_multiple_choice,?names);
???????? radioButtonList.setAdapter(adapter);
???? }
?
???? public ?void ?showSelectAuthors(View?v)?{
???????? //?long[]?authorsId?=?radioButtonList.getCheckItemIds();
???????? long []?authorsId?=?getListSelectededItemIds(radioButtonList);
???????? String?name?=? "" ;
???????? String?message;
???????? if ?(authorsId.length?>? 0 )?{
???????????? //?用户至少选择了一位作家
???????????? for ?( int ?i?=? 0 ;?i?<?authorsId.length;?i++)?{
???????????????? name?+=? "," ?+?names[( int )?authorsId[i]];
???????????? }
???????????? //?将第一个作家前面的“,”去掉
???????????? message?=?name.substring( 1 );
???????? }? else ?{
???????????? message?=? "请至少选择一位作家!" ;
???????? }
???????? Toast.makeText(RadioButtonListActivity. this ,?message,?Toast.LENGTH_LONG)
???????????????? .show();
???? }
?
???? //?避免使用getCheckItemIds()方法
???? public ?long []?getListSelectededItemIds(ListView?listView)?{
???????? ????????? long []?ids?=? new ?long [listView.getCount()]; //getCount()即获取到ListView所包含的item总个数
???????? //定义用户选中Item的总个数
???????? int ?checkedTotal?=? 0 ;
???????? for ?( int ?i?=? 0 ;?i?<?listView.getCount();?i++)?{
???????????? //如果这个Item是被选中的
???????????? if ?(listView.isItemChecked(i))?{
???????????????? ids[checkedTotal++]?=?i;
???????????? }
???????? }
?
???????? if ?(checkedTotal?<?listView.getCount())?{
???????????? //定义选中的Item的ID数组
???????????? final ?long []?selectedIds?=? new ?long [checkedTotal];
???????????? //数组复制?ids
???????????? System.arraycopy(ids,? 0 ,?selectedIds,? 0 ,?checkedTotal);
???????????? return ?selectedIds;
???????? }? else ?{
???????????? //用户将所有的Item都选了
???????????? return ?ids;
???????? }
???? }
?
} |
?
更多关于 android_intent 的文章请参考 http://www.itmmd.com/tag/android_intent.html
更多关于?android_Listview的文章请参考?http://www.itmmd.com/tag/android_listview.html
原文:http://aijuans.iteye.com/blog/2159420