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();
}
}
|
扫描二维码关注公众号,回复:
526876 查看本文章
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