gridview、listview适配器布局中带有checkbox实现的列表 checkbox只能有一项选中
来源:互联网 发布:37轩辕剑神臂进阶数据 编辑:程序博客网 时间:2024/06/06 01:51
先简单介绍下效果,手机话费充值、账户充值界面等有多个多选框选择套餐选项,默认只能有其中一项被选中,实现功能可以选择radiogroup和checkbox,但radiogroup在数据比较多的时候和布局比较复杂的情况下就不能很好的实现,所以采用checkbox来实现具体效果,请看效果图:
缴费金额可以由LinearLayout和relativelayout实现,但是充值套餐可能会有更多的套餐选择,为了更好的维护采用gridview来实现,整体思路就是gridview绑定的适配器中填充的convertview中只有一个checkbox,布局文件如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:button="@null"
android:background="@drawable/box_blue_checked_selector"
android:layout_centerHorizontal="true"
android:textSize="16sp"
/>
</RelativeLayout>
可以根据具体的项目需求,checkbox做具体的修改,适配器中的代码:
public class BoxAdapter extends BaseAdapter{ private LayoutInflater inflater; public BoxAdapter(Context context){ inflater = LayoutInflater.from(context); } @Override public int getCount() { return mList == null ? 0 : mList.size(); }
@Overridepublic Object getItem(int position) { return mList.get(position);}@Overridepublic long getItemId(int position) { return position;}
@Overridepublic View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder viewHolder; if (convertView == null){ convertView = inflater.inflate(R.layout.second_grid_item,null); viewHolder = new ViewHolder(convertView); convertView.setTag(viewHolder); }else { viewHolder = (ViewHolder) convertView.getTag(); } String s = mList.get(position); viewHolder.checkBox.setText(s);
viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
buttonView.setClickable(false);
if (button != null) {
button.setChecked(false);
}
}else button.setClickable(true);
button = buttonView;
}
});
return convertView;
}
}
public class ViewHolder{ public CheckBox checkBox; public ViewHolder(View view){ checkBox = (CheckBox) view.findViewById(R.id.checkBox); }}
适配器中主要实现逻辑就是checkbox点击事件,定义一个临时compoundbutton对象变量,在checkboxonCheckedChangeListener中判断如果当前item被选中则把当前item设置成不可点击,实现反复点击当前item时一直保持被选中状态,然后判断button是否为空,第一次点击的时候button为空,所以buttonview赋值给button,如果button不为空说明点击了其它item,则把上一个点击的item置为没选中状态,将上一个item置成可点击状态,本文只是提供了思路,具体可根据项目需求进行修改 - gridview、listview适配器布局中带有checkbox实现的列表 checkbox只能有一项选中
- 带有CheckBox的ListView,实现删除和选中功能
- listView中有checkBox选中错乱问题解决
- Android中ListView中有button,checkbox,GridView的用法
- Android中ListView中有button,checkbox,GridView的用法
- gridview中实现checkbox全部选中
- 在gridview中获取选中的CheckBox
- 在GridView中加入CheckBox实现全选以及提交CheckBox选中的相关内容
- 实现DataGrid前有一个CheckBox,并且只能选中一行.
- 关于listview中checkbox的选中问题
- Android中ListView、GridView里的CheckBox混乱且记录选中数量不准确的解决方案
- 实现GridView翻页并且实现CheckBox选中功能的保持
- Android 下实现带有图标和Checkbox的 ListView Item
- listView的item中有checkbox,重复被选中的问题
- Android中ListView中有button,checkbox,GridView的用法【安卓进化二十五】
- Android中ListView中有button,checkbox,GridView的用法【安卓进化二十五】
- 实现gridview中checkbox 模板列单选操作和.cs中判断checkbox是否选中
- checkbox的只能选中一个,div下checkbox的遍历
- 并查集
- Ubuntu 16.04 Exception: tostring() has been removed. Please call tobytes() instead.
- MySQL高可用方案选型参考
- 洛谷 P1018 乘积最大(NOIp2000提高组第二题)
- Unicode 与 String字符串之间的相互转换
- gridview、listview适配器布局中带有checkbox实现的列表 checkbox只能有一项选中
- windows网络编程(三)——UDP
- Centos下ftp的搭建
- redis windows下的环境搭建
- 欧姆龙PLC连接WINCC通讯
- java实现打印功能
- JSP中include指令和include动作的区别
- 排序问题
- Java web之四session