Android知识Android技术知识Android 开发技术分享

ListView用系统布局实现单选RadioButton和多选C

2016-12-11  本文已影响1490人  dayang
一、制作有单选item的ListView

主要有两点:

效果图
ListView单选.png
显示的数据源资源文件
<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>
设置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

其实跟有单选item的ListView差不多
主要有两点:

效果图
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选择的值

使用类SparseBooleanArray,是一个Map映射类,为选择位置,为是被选择的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];
            }
        }
上一篇 下一篇

猜你喜欢

热点阅读