Android实现LIstView条目单选和多选RadioButton

来源:互联网 发布:优化好的单机游戏 编辑:程序博客网 时间:2024/06/13 14:58

看效果图是不是你想要的


ListView的布局

<ListView    android:choiceMode="singleChoice"    android:background="#fff"    android:layout_marginTop="5dp"    android:id="@+id/listview_template"    android:layout_above="@id/ll"    android:layout_width="match_parent"    android:layout_height="match_parent"/>
其中choiceMode的属性很重要 选择模式.再没有发现这个属性的时候,我们一般会把选中的添加到一个Map中(position,true或false),然后在取出值进行判断是否有选中,

ListView的选择模式有4中分别是

1,CHOICE_MODE_NONE 普通模式

2,CHOICE_MODE_SINGIE单选模式

3,CHOICE_MODE_MULTIPLE多选模式

4,CHOICE_MODE_MULTIPLE_MODAL多选模式

也可以在代码中设置这4个属性值

mListView.setChoiceMode(ListView.CHOICE_MODE_SINGIE);

下面是item的布局里面包含一个RadioButton

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"                android:paddingTop="7dp"                android:paddingBottom="7dp"                android:layout_width="match_parent"                android:layout_height="match_parent">    <TextView        android:layout_marginLeft="12dp"        android:textSize="@dimen/textSize_Eighteen"        android:id="@+id/template_name"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerVertical="true"        android:text="模板1"/>    <RadioButton        android:checked="false"        android:clickable="false"        android:focusableInTouchMode="false"        android:layout_centerVertical="true"        android:layout_alignParentRight="true"        android:focusable="false"        android:layout_gravity="center_vertical"        android:layout_marginRight="12dp"        android:id="@+id/chickbutton"        android:button="@drawable/chickbox_quipment_bg_selector"        android:layout_width="wrap_content"        android:layout_height="wrap_content"/></RelativeLayout>
getView方法

@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {    if (convertView == null) {        convertView = View.inflate(SelectWatermarkActivity.this, R.layout.view_template, null);    }    TextView name = (TextView) convertView.findViewById(R.id.template_name);    final RadioButton radioButton = (RadioButton) convertView.findViewById(R.id.chickbutton);    if (selectPosition == position) {        radioButton.setChecked(true);    } else {        radioButton.setChecked(false);    }    TemplateBean.ResponseBean bean = mResponse.get(position);    name.setText(bean.getTemplateName());    return convertView;}
其中selectPosition是用户选择条目的变量

再用户点击条目的时候进行初始化

@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {    selectPosition = position;    mAdapter.notifyDataSetChanged();}
好了使用choiceMode属性可以很简单的实现单选和多选功能




原创粉丝点击