`
Mr.Joe
  • 浏览: 136797 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android CheckBox控件使用OnClickListener和OnCheckedChangeListener两种不同的方法监听

阅读更多
Android中CheckBox控件使用可以通过两种方法实现
1、OnClickListener
2、OnCheckedChangeListener

布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <CheckBox
        android:id="@+id/all_checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="全选" />
    
    <CheckBox
        android:id="@+id/first_checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="选项1" />

    <CheckBox
        android:id="@+id/secend_checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="选项2" />

    <CheckBox
        android:id="@+id/third_checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="选项3" />

    <CheckBox
        android:id="@+id/fourth_checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="选项4" />

</LinearLayout>


控制文件
package com.geoffrey.practice_checkbox;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;

public class MainActivity extends Activity {
	private CheckBox allCheckBox;
	private CheckBox firstCheckBox;
	private CheckBox secendCheckBox;
	private CheckBox thirdCheckBox;
	private CheckBox fourthCheckBox;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_checkbox);

		allCheckBox = (CheckBox) findViewById(R.id.all_checkbox);
		firstCheckBox = (CheckBox) findViewById(R.id.first_checkbox);
		secendCheckBox = (CheckBox) findViewById(R.id.secend_checkbox);
		thirdCheckBox = (CheckBox) findViewById(R.id.third_checkbox);
		fourthCheckBox = (CheckBox) findViewById(R.id.fourth_checkbox);

		// 给第一个和第二个CheckBox控件绑定OnCheckBoxClickListener方法
		OnCheckBoxClickListener listener = new OnCheckBoxClickListener();
		firstCheckBox.setOnClickListener(listener);
		secendCheckBox.setOnClickListener(listener);

		// 给第三个和第四个CheckBox控件绑定CheckBoxListener方法
		CheckBoxListener listener2 = new CheckBoxListener();
		thirdCheckBox.setOnCheckedChangeListener(listener2);
		fourthCheckBox.setOnCheckedChangeListener(listener2);

		// 全选,全部取消
		allCheckBox.setOnClickListener(listener);

	}

	// 内部类OnCheckBoxClickListener,使用OnClickListener方法监听
	class OnCheckBoxClickListener implements OnClickListener {

		@Override
		public void onClick(View view) {
			CheckBox checkBox = (CheckBox) view;
			if (checkBox.getId() == R.id.first_checkbox) {
				System.out.println("点击第一个checkbox");
			} else if (checkBox.getId() == R.id.secend_checkbox) {
				System.out.println("点击第二个checkbox");
			}

			if (checkBox.isChecked()) {
				System.out.println("选中");
				if (checkBox.getId() == R.id.all_checkbox) {
					firstCheckBox.setChecked(true);
					secendCheckBox.setChecked(true);
					thirdCheckBox.setChecked(true);
					fourthCheckBox.setChecked(true);
				}
			} else {
				System.out.println("取消选中");
				allCheckBox.setChecked(false);
				if (checkBox.getId() == R.id.all_checkbox) {
					firstCheckBox.setChecked(false);
					secendCheckBox.setChecked(false);
					thirdCheckBox.setChecked(false);
					fourthCheckBox.setChecked(false);
				}
			}

		}

	}

	// 内部类CheckBoxListener,使用OnCheckedChangeListener方法监听
	class CheckBoxListener implements OnCheckedChangeListener {

		@Override
		/**
		 * @param buttonView 点击选中的控件
		 * @param isChecked 是否选中状态
		 */
		public void onCheckedChanged(CompoundButton buttonView,
				boolean isChecked) {
			if (buttonView.getId() == R.id.third_checkbox) {
				System.out.println("点击第三个checkbox");
			} else if (buttonView.getId() == R.id.fourth_checkbox) {
				System.out.println("点击第四个checkbox");
			}

			if (isChecked) {
				System.out.println("选中");
			} else {
				System.out.println("取消选中");
				allCheckBox.setChecked(false);
			}

		}

	}

}







  • 大小: 23.5 KB
0
0
分享到:
评论

相关推荐

    android ListView子控件监听

    在Android开发中,ListView是...通过以上方式,开发者可以灵活地为Android ListView的子控件设置各种事件监听,以满足不同应用场景的需求。理解并掌握这些监听机制,对于开发高效且用户体验良好的Android应用至关重要。

    Android CheckBox

    在Android开发中,CheckBox是一种常见的UI元素,用于用户进行多选操作。它是一个复选框,用户可以勾选或取消勾选,表示对某个选项的同意或选择。本篇文章将深入探讨Android CheckBox的相关知识点,包括它的基本用法...

    android基础控件使用

    每个控件都有其独特的属性和方法,开发者可以根据需求进行定制和组合,以创建丰富多样的用户界面。同时,还可以通过自定义布局和样式来进一步增强控件的表现力和交互性。在实际开发中,理解并熟练掌握这些基础控件是...

    android 的listview 内部item的布局包含checkbox控件

    在Android开发中,ListView是一种非常常见的视图组件,它用于展示大量的数据列表,通常用于创建具有滚动功能的应用界面。在ListView中,我们有时需要在每个Item(列表项)内加入可选的元素,如Checkbox,以实现多选...

    android常用控件大全讲解

    每个控件都有相应的属性可以设置,如尺寸、颜色、文字等,并可以通过设置监听器(如OnClickListener、OnCheckedChangeListener等)来响应用户的操作。在布局文件中,我们可以使用XML语法来定义控件的属性和它们之间...

    Android搭建和控件大全以及各控件的使用方式

    这份压缩包中的两个文档,"Android控件使用.doc"和"Android控件大全以及各空间的使用方式.doc",很可能会详细讲解以上各个方面,包括每个控件的属性、方法,以及在实际项目中的应用示例。对于初学者,这样的实践指导...

    安卓自定义控件相关-自定义的带动画效果的CheckBox控件不过只有一个自定义的View文件.rar

    总之,自定义的带有动画效果的CheckBox控件是一种创新的设计,它展示了Android开发中自定义视图的强大能力。通过深入理解View的生命周期和绘图机制,开发者可以创建出各种复杂而富有表现力的UI组件。然而,使用这样...

    Android 多种android控件的Demo.zip

    例如,使用OnClickListener监听按钮点击,使用Adapter填充ListView或GridView的数据,使用OnClickListener和OnCheckedChangeListener处理单选按钮和复选框的选择状态变化等。 图片文件可能展示了这些控件在实际应用...

    Android的ExpandableListView+CheckBox全选

    在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠分组,每个分组下可以包含多个子项。这种控件在显示层次结构数据时非常实用。`CheckBox`则是另一种常见的组件,用于让用户进行多选...

    android控件及事件的使用(1)

    事件监听通常有两种实现方式:一是直接在XML布局文件中使用`android:onClick`属性;二是通过Java代码动态设置监听器。前者简化了代码,但可读性稍差,而后者更灵活,便于代码维护。 6. **事件传递机制** 在...

    android核心控件使用,button 、ListView、TextView

    Button的常见用法包括设置点击事件监听器(OnClickListener)以执行特定操作,以及使用XML属性(如android:text、android:onClick等)来配置按钮的文本和行为。 ListView是用于展示大量数据的滚动列表视图,它允许...

    android Button监听事件的几种类型

    3. **CompoundButton.OnCheckedChangeListener**:如果Button是复选框(CheckBox)或切换按钮(ToggleButton),则需要使用此监听器。它会在Button的选中状态改变时触发onCheckedChanged()方法: ```java ...

    Android基本控件集合

    这篇教程将详细介绍12种常见的Android控件及其基本用法,帮助你更好地理解和运用这些控件来构建美观且功能丰富的应用程序。 1. **Button(按钮)**:Button是最基础的控件,用于触发一个操作。可以通过设置text属性...

    android常用控件

    同时,理解如何绑定事件监听器和处理用户交互也是Android开发的重要部分。例如,可以使用OnClickListener、OnCheckedChangeListener等接口来响应控件的点击事件。此外,自定义控件也是提升应用特性的有效手段,可以...

    安卓Android源码——(CheckBox与监听).rar

    这个压缩包中的 `3-5(CheckBox与监听)` 文件可能包含了如何创建 `CheckBox`,设置监听器以及处理状态变化的示例代码,通过学习和理解这些内容,开发者可以更好地在 Android 应用程序中使用 `CheckBox` 这一关键组件...

    Android设置CheckBox

    此外,如果需要对多个CheckBox进行联动或数据绑定,可以使用RadioGroup配合RadioButton,或者使用Material Design的SwitchCompat控件。在处理大量复选项时,还可以考虑使用CheckBox的子类,比如MultiChoiceAdapter,...

    Android图形界面基本UI控件示例

    ToggleButton是开关型的控件,有开启和关闭两种状态。它的外观类似于开关,用户可以快速切换其状态。`android:checked`属性控制初始状态,`onCheckedChangeListener`可以监听状态变化。 6. **RadioButton**: ...

    Android基础系列之布局和控件

    此外,Android提供了丰富的事件监听机制,如`OnClickListener`,`OnCheckedChangeListener`等,让我们能够响应用户操作。通过设置属性,如`android:onClick`,可以在XML中直接指定点击事件的处理函数。 最后,要...

Global site tag (gtag.js) - Google Analytics