setChecked方法触发onCheckedChanged监听器问题

有时需要在程序初始化界面时,讲有些例如toggleButton等控件按照需求勾选,此时会发现,当我setChecked时会触发onCheckedChanged监听器,导致这部分代码被调用两次。解决方法时区分开人为点击和setChecked,在监听器中加入一个判断,是否按下:

	@Override
	public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
		// TODO Auto-generated method stub
		if(!buttonView.isPressed())return;	//加这一条,否则当我setChecked()时会触发此listener
... ...
}

另外,还有个感触,做IT的百度不行,真心离不开Google 啊,此问题参考StackOverFlow(http://stackoverflow.com/questions/9129858/how-can-i-distinguish-whether-value-is-changed-by-user-or-programmatically-incl

setChecked方法触发onCheckedChanged监听器问题

时间: 2024-10-29 01:01:38

setChecked方法触发onCheckedChanged监听器问题的相关文章

CheckBox:屏蔽setChecked方法对OnCheckedChangeListener的影响

对于CheckBox的OnCheckedChangeListener,有两种情况下会被触发: (1)用户点击了一下CheckBox: (2)代码中调用了setChecked(boolean checked)方法,并且参数checked与CheckBox原始的选中状态不一致. 有时候,需要只监听(1)的事件,而忽略(2)的事件. 事实上,这种需求十分常见.例如,页面中有一个列表,列表中有多个checkBox供用户选择,同时页面有一个全选功能的checkBox. (a)当用户将全选checkBox选

trigger()方法触发指定类型事件

trigger()功能表示当页面dom加载完成后,自动执行一些操作. 语法:trigger(type,[data]); 参数说明: type:触发事件的类型. data:触发事件传递给函数附加参数. 案例: $(function(){ $("btn").bind("click",function(){ $("input").trigger("select"); }); }) 总结:使用trigger()自动触发事件固然方便,但

IOS中AppDelegate类中的方法触发时机-----自定义AppDelegate的写法

@implementation AppDelegate //当应用程序加载时触发,创建window窗口对象,让对象的window成为程序的主窗口,并且可视. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen ma

【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件

博客地址 : http://blog.csdn.net/shulianghan/article/details/41520569 代码下载 : -- GitHub : https://github.com/han1202012/WheelViewDemo.git -- CSDN : http://download.csdn.net/detail/han1202012/8208997 ; 博客总结 : 博文内容 : 本文完整地分析了 WheelView 所有的源码, 包括其适配器类型, 两种回调接

MyBatis应用开发(18)延迟加载之延迟加载触发方法(lazyLoadTriggerMethods)

1.1.1. 使用lazyLoadTriggerMethods lazyLoadTriggerMethods默认情况下仅仅支持自动将equals,clone,hashCode,toString这几个方法定义为延迟加载的加载触发方法. 如果将Person的doLazyLoadingNow()方法加入这个列表中,则调用doLazyLoadingNow()方法将会导致Person上的所有延迟加载属性的关联对象被执行加载. 在SqlMapConfig.xml中配置了doLazyLoadingNow方法.

关于监听器的两种实现方法

监听器的实现方法其一是通过匿名内部类,其二是通过实现接口.作为初学者,犯了小错,写下来作为比较加强记忆. 首先是通过匿名内部类.匿名内部类需要声明对应的监听器对象 public class MainActivity extends Activity { //声明监听器对象 public AMapLocationListener mLocationListener; protected void onCreate(Bundle savedInstanceState) { super.onCreat

jQuery绑定以及解除时间方法总结,以及事件触发的方法

 一   off()和on()          $("obj").on(event,[sesect],[data],fn);一般情况下参数只有两个,事件以及事件的处理函数          off() 方法移除用.on()绑定的事件处理程序,如$("p").off("click","");   二  die()和live()        $("obj").live(type,[date],fn),$(&

使用jQuery中trigger()方法自动触发事件

一.常用事件 在页面加载完成时  自动触发input的点击事件,在移动端可以实现自动弹出输入法,获得焦点 $("input").trigger("click").focus(); 还有一种简写方式: $("input").click(); 还有其它事件就不一一列出了. 二.自定义事件 $("#btn").on("myClick",function(){ alert("自定义事件"); }

16.调用trigger()方法手动触发指定的事件

trigger()方法可以直接手动触发元素指定的事件,这些事件可以是元素自带事件,也可以是自定义的事件,总之,该事件必须能执行,它的调用格式为: $(selector).trigger(event) 其中event参数为需要手动触发的事件名称. 例如,当页面加载时,手动触发文本输入框的“select”事件,使文本框的默认值处于全部被选中的状态,如下图所示: 在浏览器中显示的效果: 从图中可以看出,由于文本输入框调用trigger()方法触发了“select”事件,因此,当页面加载完成后,文本框中