野人学Android基础篇之初探UI控件第五课--RadioGroup

在对RadioGroup介绍之前,先来一张图片。


如果看过我上一篇的博客,应该知道“正方形+文字”是什么控件,对,就是CheckBox,那上面“圆形+文字”的是RadioButton控件。之所以将这两个控件放在一起,是因为两者有着相似之处,但也有不同之处,这样的比较会加强对这两个控件的印象。

相似之处,都是记录选择状态的控件。

不同之处,CheckBox可以通过点击记录“选中”和“未选中”两种状态,而RadioButton一旦被选择上,无法取消选中状态;CheckBox和RadioButton的监听机制都是setOnCheckedChangeListener,但是这两个控件的监听机制不是一个方法,具体的代码下面会介绍。

读到这里,你可能会觉得奇怪,本博客的标题是RadioGroup,为什么讲RadioButton呢?其实,RadioButton是RadioGroup的一部分,所以了解RadioButton的机理是为了更好地理解RadioGroup。正如上所言,RadioButton一旦选中后无法取消,而当多个RadioButton出现的时候可以在其之间进行选择,但是只能保持一个RadioButton被选中。这里的解释可能有点绕口,希望大家课后多多练习,加深印象。

对RadioGroup进行了简单的介绍,下面就教一下大家如何使用RadioGroup这个控件吧。

1.xml中checked属性,true呈现被选中的状态,false呈现未被选中的状态,不插入这个属性,系统默认为false;

2.此处的setOnCheckedChangeListener和CheckBox的不是一个引用包,要记住RadioGroup的引用包,如下图:


本次代码以匿名内部类为例。在调用了setOnCheckedChangeListener的方法之后,要实例一个类,叫做OnCheckedChangeListener(),在类中要重写public void onCheckedChanged(RadioGroup group, int checkedId),代码如下:

import android.app.Activity;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;


public class RadioDemo extends Activity {
	private RadioGroup rg;
	private RadioButton rb1,rb2;
	private TextView tx1,tx2;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.radiobutton);
		rg = (RadioGroup) findViewById(R.id.radioGroup1);
		rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {
		@Override
		public void onCheckedChanged(RadioGroup group, int checkedId) {
			// 通过checkedId获取RadioButton对象
			rb1 = (RadioButton) RadioDemo.this.findViewById(checkedId);
			//通过group对象获取当前的id
			int id = group.getCheckedRadioButtonId();
			//通过id获取RadioButton对象
			rb2 = (RadioButton) RadioDemo.this.findViewById(id);
			tx1 = (TextView) findViewById(R.id.textView1);
			tx2 = (TextView) findViewById(R.id.textView2);
			//通过getText方法来获取RadioButton的文字部分	
			tx1.setText("第一种ID:"+rb1.getText());
			tx2.setText("第二种ID:"+rb2.getText());		
			}
		});
	}
}


 

onCheckedChanged的方法有两个参数,第一个是RadioGroup类型的group,第二个参数int类型的checkedId,指的是选中对象的id。在以上代码中,我提供了两种方式获取被选择对象的id,其中一个很好理解,就是方法自带的checkedId,另一个是通过group的getCheckedRadioButtonId()方法获取的,其实我也不知道为什么android会提供这两种方法。除此之外,我还想给大家介绍下如何获取被选中RadioButton的文字内容。前面已经获得id,然后通过findViewById()获取,不过方法前要写上下文,就是"RadioDemo.this"。在获取RadioButton对象之后,只需要调用getText()方法就完成了获取选中状态下RadioButton的文字部分。


预告一下,下一篇博文,会分析下ListView这一控件,考虑到ListView知识点比较多,会分成两个课时跟大家分享下。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值