一、制作有單選item的ListView
主要有兩點(diǎn):
- 設(shè)置ListView 的選擇模式為單選模式AbsListView.CHOICE_MODE_SINGLE
setChoiceMode(AbsListView.CHOICE_MODE_SINGLE) - 設(shè)置ListView 的item的顯示view為android系統(tǒng)單選布局
android.R.layout.simple_list_item_single_choice
效果圖
ListView單選.png
顯示的數(shù)據(jù)源資源文件
<resources>
<string-array name="cities">
<item>武漢</item>
<item>北京</item>
<item>上海</item>
<item>成都</item>
<item>西安</item>
</string-array>
</resources>
ListView的布局文件
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context=".ChoiceActivity_12_09">
<ListView
android:id="@+id/listView_09"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
設(shè)置Adapter
ListView listView = (ListView) findViewById(R.id.listView_09);
listView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.cities, android.R.layout.simple_list_item_single_choice);
listView.setAdapter(adapter);
取得選擇的位置
int position= listView.getCheckedItemPosition();
二、制作有多選item的ListView
其實(shí)跟有單選item的ListView差不多
主要有兩點(diǎn):
- 設(shè)置ListView 的選擇模式為多選模式AbsListView.CHOICE_MODE_MULTIPLE
setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE) - 設(shè)置ListView 的item的顯示view為android系統(tǒng)多選布局
android.R.layout.simple_list_item_multiple_choice
效果圖
ListView多選框.png
java代碼
ListView listView = (ListView) findViewById(R.id.listView_09);
listView.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.cities, android.R.layout.simple_list_item_multiple_choice);
listView.setAdapter(adapter);
取得checkBox選擇的值
使用類(lèi)SparseBooleanArray,是一個(gè)Map映射類(lèi),鍵為選擇位置,值為是被選擇的boolean值
第一種取得選擇的值
String array[]=getResources().getStringArray(R.array.cities);
SparseBooleanArray checked=listView.getCheckedItemPositions();
String str="";
for(int i=0;i<array.length;i++){
if(checked.get(i)){//如果該位置的checkbox被選中
str+=array[i];
}}
第二種取得選擇的值
String array[]=getResources().getStringArray(R.array.cities);
SparseBooleanArray checked=listView.getCheckedItemPositions();
for(int i=0;i<checked.size();i++){
boolean b =checked.valueAt(i);
if(b){
int pos=checked.keyAt(i);
str+=array[pos];
}
}