您的位置:首页 > 移动开发 > Android开发

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

2017-11-27 16:32 295 查看
看效果图是不是你想要的



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方法

@Override
public 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是用户选择条目的变量

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

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectPosition = position;
mAdapter.notifyDataSetChanged();

}

好了使用choiceMode属性可以很简单的实现单选和多选功能
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: