RadioGroup

一个RadioGroup里面可以有多个RadioButton,但是只能选中其中的一个RadioButton。

RadioGroup内部的什么位置(从0开始)

编写监听器,监听器实现的是RadioGroup.OnCheckedChangeListener()提供的接口,需要重写里面的public void onCheckedChanged(RadioGroup group, int checkedId) 方法,这个方法的第一个参数是用来接收RadioGroup对象,第二个参数是用来接收被选中的RadioButton的ID。
在这个方法里面可以做一系列的判断和操作,比如判断RadioButton的id是否等于checkedId,如果等于就可以输出一句话或者使用Toast显示提示消息。

RadioGroup的监听器实现是RadioGroup.OnCheckedChangeListener()提供的接口,而CheckBox的监听器实现的是CompoundButton.OnCheckedChangeListener()提供的接口
为什么RadioGroup和CheckBox实现的不是同一个接口呢?
原因大概是因为:

  • 在RadioGroup.OnCheckedChangeListener()里面的onCheckedChanged(RadioGroup group, int checkedId) 方法它里面需要的是一个RadioGroup参数,而RadioGroup并不是CompoundButton的子类,所以它只能再重新写一个这样的接口。
  • 而CheckBox它本身就是CompoundButton的子类,所以它可以直接使用这个接口。
    • 是TextView、Button的子孙类,其有两种状态(选中或不选中)
      • isChecked()  判断是否被选中,返回true或者false
         performClick() 调用OnClickListener监听器,即相当于模拟一次单击事件
        setChecked(boolean)  通过传入的布尔参数设置空间选中状态
        toggle()  置放控件当前的状态
         setOnCheckedChangeListener  为控件设置OnCheckedChangeListener监听器




    • CheckBox通过绑定OnCheckedChangeListener来监听选中/不选中状态变化。
    • 通过设置CheckBox的android:button属性对应的selector来达到不同状态下的显示。定义一个selector文件,将其命名为myCheckBox.xml,并放在res/drawable目录下。然后,将android:button属性指向selector文件,即“@drawable/myCheckBox”。
setOnCheckedChangeListener(new OnCheckedChangeListener() {
                public void onCheckedChanged(CompoundButton buttonView,
                        boolean isChecked) {}
});

CompoundButton.OnCheckedChangeListener, Interface definition for a callback to be invoked when the checked state of a compound button changed.

The onCheckedChanged is called when coming back from the another Activity, without possible user interaction to actually check anything.

Just realized you’re doing this in an Adapter. This may not be related to onRestoreInstanceState, but I think I see the problem. You are reusing Views in the Adapter, which is good, but you’re setting star to checked before setting the listener. The problem is that star already has a listener from the last time it came through the getView method. Before you call star.setChecked(), call star.setOnCheckedChangedListener(null) and see if that solves your problem.

Android: How to get a radiogroup with togglebuttons?

ToggleButton 还有一个IsThreeState 属性,如果把它设为true 的话,IsChecked 就会有3 种值:true、false 或者null。事实上,IsChecked 是Nullable<Boolean>类型的。第1 次点击ToggleButton 会把IsChecked 设为 true,第2 次则把它设为null,第3次把它设为false,依此类推。

除了IsChecked 属性以外,ToggleButton 分别为每一个IsChecked 的值定义了不同的事件:true 对应 Checked 事件,false 对应Unchecked 事件,null 对应Indeterminate 事件。ToggleButton 没有单独的 IsCheckedChanged 事件似乎很奇怪,但是3种不同的事件便于声明。

  • CheckBox 和ToggleButton 只有外观上的差别!CheckBox除了在继承ToggleButton 时重写了控件默认样式以及视觉外观以外,其他都与ToggleButton 完全一样

和RepeatButton 一样,ToggleButton 也属于System.Windows.Controls.Primitives 命名空间,这意味着 WPF 的设计器并不期望用户在没有额外定制的情况下直接使用ToggleButton。这个设想很自然,但在后面的章节里你会看到,如何在一个ToolBar 里直接使用ToggleButton。

  • RadioButton 是另一种从ToggleButton 继承过来的控件,但它的特殊在于支持互斥性。当多个RadioButton 被放在一个组里,一次只有一个可以被选中,把一个RadioButton 选中就会自动把组中其他所有的RadioButton 设为不选中。事实上,用户不能直接通过选中RadioButton 来取消对它本身的选中,这一动作只能通过编程方式来完成。因此,RadioButton 是为多项选择所设计的。
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

生活在西班牙

自己动手丰衣足食

BlueAsteroid

Just another WordPress.com site

Jing's Blog

Just another WordPress.com site

Start from here......

我的心情魔方

天才遠私廚

希望能做一個分享各種資訊的好地方

语义噪声

西瓜大丸子汤的博客

笑对人生,傲立寰宇

Just another WordPress.com site

Where On Earth Is Waldo?

A Project By Melanie Coles

the Serious Computer Vision Blog

A blog about computer vision and serious stuff

Cauthy's Blog

paper review...

Cornell Computer Vision Seminar Blog

Blog for CS 7670 - Special Topics in Computer Vision

datarazzi

Life through nerd-colored glasses

Luciana Haill

Brainwaves Augmenting Consciousness

槑烎

1,2,∞

Dr Paul Tennent

and the university of nottingham

turn off the lights, please

A bunch of random, thinned and stateless thoughts around the Web

%d bloggers like this: