Android使用RadioButton结合ListView显示对话框单选按钮列表
来源:互联网 发布:淘宝好看的女鞋店铺 编辑:程序博客网 时间:2024/04/29 09:55
Android使用RadioButton结合ListView显示对话框单选按钮列表
有时候对话框的单选按钮列表不能满足我们的的设计需求,因为有时候按钮右边不一定是文字,有可能是文件加图片,或多个文字字段的一行内容,这时我们就需要自定义来解决了。
普通单选的效果:
自定义的效果:
本文中介绍的示例效果:
自定义的单选列表数据设计是由ListView的条目构成的,一行数据可以设计成很复杂的内容,比如多张图片或分行显示等等。
设计思想:ListView里面的条目布局左边(或者可以在右边)放一个RadioButton控件,右边设计放文本或图片,可以多个。
还有一个有点复杂的设计的是要判断每一行只有一个RadioButton能被选中,其实是在点击的时候先把每一行的按钮的属性设置为不被选中,然后再把点击的那个按钮的属性设置为选中,这样每次就能保证不会有两个RadioButton被选中。
贴一下主要代码:
(一)ListView的条目的布局设计代码
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="80dp" android:paddingBottom="10dp" android:paddingTop="10dp" > <RadioButton android:id="@+id/rb" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" /> <TextView android:id="@+id/tv_info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="info" android:textSize="25sp" /> <ImageView android:id="@+id/iv_picture" android:layout_width="100dp" android:layout_height="match_parent" android:scaleType="center" /></LinearLayout>
(二)Adapter类中判断所有行只能有一行的RadioButton按钮被选中。
//用于记录每个RadioButton的状态,并保证只可选一个 public HashMap<Integer, Boolean> states = new HashMap<Integer, Boolean>(); //在这里要做判断保证只有一个RadioButton被选中 //当RadioButton被选中时,将其状态记录进States中,并更新其他RadioButton的状态使它们不被选中 viewHolder.rb.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //把所有的按钮的状态设置为没选中 for (int i = 0; i < getCount(); i++) { states.put(i, false); } //然后设置点击的那个按钮设置状态为选中 states.put(position, true); //这样所有的条目中只有一个被选中! notifyDataSetChanged();//刷新适配器 } }); //上面是点击后设置状态,但是也是需要设置显示样式,通过判断状态设置显示的样式 if (states.get((Integer) position) == null || states.get((Integer) position) == false) { //true说明没有被选中 viewHolder.rb.setChecked(false); } else { viewHolder.rb.setChecked(true); }
三.显示对话框方法的代码
// 使用对话框内的控件来关闭对话框 private void getSignatureDialog() { // View final View view = View.inflate(this, R.layout.dialog_signature, null); ListView lv_signature = (ListView) view.findViewById(R.id.lv_signature); Button btn_yes = (Button) view.findViewById(R.id.btn_yes); Button btn_no = (Button) view.findViewById(R.id.btn_no); final View listviewLayout = View.inflate(this, R.layout.dialog_signature, null); //List List<SignatureBean> signatureList = new ArrayList<SignatureBean>(); final String[] info = {"张三", "李四", "王五", "赵六"}; final int[] pictureID = {R.drawable.ic_launcher, R.drawable.sig, R.drawable.signature, R.drawable.sort1}; for (int i = 0; i < info.length; i++) { signatureList.add(new SignatureBean(info[i], pictureID[i])); } //adapter final SignatureAdapter adapter = new SignatureAdapter(this, signatureList); lv_signature.setAdapter(adapter); // 创建对话框对象 final AlertDialog dialog = new AlertDialog.Builder(this). // 设置标题// setTitle("通过按钮关闭对话框"). // 添加输入的文本框 setView(view). // 产生 create(); // 设置对话框不可以关闭,一般情况下对话框是失去焦点后自动消失的 // 但是加 了.setCancelable(false),对话框就不会消失,除非手动退出 dialog.setCancelable(false); // 显示 dialog.show(); //设置View内的点击事件 btn_yes.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {// Toast.makeText(MyActivity.this, "点击了确定", Toast.LENGTH_SHORT).show(); for (int i = 0; i < info.length; i++) { if (adapter.states.get(i) != null && (adapter.states.get(i))) { imageView.setImageResource(pictureID[i]); } } dialog.dismiss(); } }); btn_no.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 点击后关闭对话框,两种方法都可以 // dialog.cancel(); dialog.dismiss();// Toast.makeText(MyActivity.this, "点击了取消", Toast.LENGTH_SHORT).show(); } }); }
其他的代码大家可以思考一下,这里也提供一下我的源代码:
http://download.csdn.net/detail/wenzhi20102321/9820636
如果你的页面有多个对话框最好统一一下颜色,系统的对话框标题字体颜色是:#33B5E5,标题下面那条横线的颜色也是这个。
当然这个UI界面如果要用到程序中是需要设计好看一一点的,比如字体的颜色大小,按钮的背景选择等等设置,我这里只是我开发项目测试的一个小Demo,很多数据要和项目主题对应,需要自己慢慢改。
对于android对话框的使用总结,我之前也是有个详细的总结,包括各种列表的对话框,各种进度条的对话框,各种时间、日期选中的对话框的使用都有,大家可以借鉴。
http://blog.csdn.net/wenzhi20102321/article/details/52818351
共勉:再艰难的时刻总有过去的时候。
1 0
- Android使用RadioButton结合ListView显示对话框单选按钮列表
- Android中ListView与RadioButton结合----自定义单选列表
- Android中ListView与RadioButton结合----自定义单选列表
- Android中ListView与RadioButton结合----自定义单选列表
- Android中ListView与RadioButton结合----自定义单选列表
- Android中ListView与RadioButton结合----自定义单选列表
- RadioButton与ListView结合做成单选列表
- Android中ListView与RadioButton结合----自定义单选列表 既在原基础上修改
- Android:ListView(列表)与RadioButton实现列表单选
- Android 单选按钮RadioButton的使用
- Android 单选按钮RadioButton的使用
- ListView与RadioButton的结合单选
- Android RadioButton 单选按钮
- 单选按钮RadioButton使用
- ListView配合RadioButton实现单选列表
- 从零开始学android<RadioButton单选按钮的使用.七.>
- Android---RadioButton(单选按钮)详解
- Android入门之单选按钮(RadioButton)
- Textview设置文字样式和颜色
- java 报表查询数据实现序号自动递增
- 数据库-MYSQL安装配置和删除
- 浅析ORM
- 03-树1 树的同构 (25分)
- Android使用RadioButton结合ListView显示对话框单选按钮列表
- poj 2239 Selecting Courses
- Junit单元测试
- 从这里开始吧
- (4)caffe总结之视觉层及参数
- 设定义一个类 整型数组的大小,表示可放元素的个数整型数组当前的元素个数,初始应为0,当elem等于size时,数组满
- 使用 Gradle 发布 AAR 到 Maven 仓库
- 自考那些事儿(九):再次学操作系统
- oracle sql复习