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

一、制作有单选item的ListView

主要有两点:

  • 设置ListView 的选择模式为单选模式AbsListView.CHOICE_MODE_SINGLE
    setChoiceMode(AbsListView.CHOICE_MODE_SINGLE)
  • 设置ListView 的item的显示view为android系统单选布局
    android.R.layout.simple_list_item_single_choice
效果图
ListView用系统布局实现单选RadioButton和多选CheckBox_第1张图片
ListView单选.png
显示的数据源资源文件

 
        武汉
        北京
        上海
        成都
        西安
    

ListView的布局文件


   

设置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 的选择模式为多选模式AbsListView.CHOICE_MODE_MULTIPLE
    setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE)
  • 设置ListView 的item的显示view为android系统多选布局
    android.R.layout.simple_list_item_multiple_choice
效果图
ListView用系统布局实现单选RadioButton和多选CheckBox_第2张图片
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
第二种取得选择的值
String array[]=getResources().getStringArray(R.array.cities);
SparseBooleanArray checked=listView.getCheckedItemPositions();
for(int i=0;i

你可能感兴趣的:(ListView用系统布局实现单选RadioButton和多选CheckBox)