|
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