先看效果
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
getView方法
@OverridepublicViewgetView(final intposition,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);
finalRadioButton 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());
returnconvertView;
}
其中selectPosition是用户选择条目的变量
再用户点击条目的时候进行初始化
@Overridepublic voidonItemClick(AdapterView parent,View view, intposition, longid) {
selectPosition= position;
mAdapter.notifyDataSetChanged();
}
好了使用choiceMode属性可以很简单的实现单选和多选功能
网友评论