ListView用系統(tǒng)布局實(shí)現(xiàn)單選RadioButton和多選CheckBox

一、制作有單選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];
            }
        }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一個(gè)ListView通常有兩個(gè)職責(zé)(1)將數(shù)據(jù)填充到布局(2)處理用戶的選擇點(diǎn)擊等操作 一個(gè)ListView的創(chuàng)建...
    183207efd207閱讀 1,705評(píng)論 0 7
  • 1、可以使某些資源文件或UI組件可重用 2、定義一個(gè)文本編輯框,使用絕對(duì)定位android:layout_x="2...
    juexin閱讀 699評(píng)論 0 1
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程,因...
    小菜c閱讀 6,551評(píng)論 0 17
  • 紫嵐草的諸多作用中,有一個(gè)作用就是它對(duì)猿猴類(lèi)的妖獸有強(qiáng)烈的毒性,一般白銀級(jí)以?xún)?nèi)的猿猴類(lèi)妖獸很難抵御紫嵐草的藥性。 ...
    im喵小姐閱讀 260評(píng)論 0 0
  • 我是一個(gè)孤獨(dú)恐懼癥患者,在一個(gè)人的時(shí)候感到自卑,不想讓別人看到我孤獨(dú)的樣子,感覺(jué)孤獨(dú)是一件丟人的事;在我的朋友陪著...
    簡(jiǎn)單到不羈閱讀 651評(píng)論 0 0