• 【Android每日一讲】2012.11.26 消费券采购列表 多选项CheckBox的应用


    1. 范例说明

    • 这个范例要示范的是CheckBox.setOnCheckedChangeListener,在程序设计3个CheckBox核取项,分别表示3种物品列表,当User勾选其中一个物品,就在TextView里显示已选择的物品列表。
    • 程序关键在于同时监听3个CheckBox.OnCheckedChangeListener的状态,并在CheckBox.onChecked()方法中,重组所有被勾选的物品文字。

    2. 运行结果

    3. 编写代码

    /** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		/* 透过findViewById取得TextView对象并调整文字内容 */
    		mTextView1 = (TextView) findViewById(R.id.myTextView1);
    		mTextView1.setText("你所选择的项目有: ");
    		/* 透过findViewById取得三个CheckBox对象 */
    		mCheckBox1 = (CheckBox) findViewById(R.id.myCheckBox1);
    		mCheckBox2 = (CheckBox) findViewById(R.id.myCheckBox2);
    		mCheckBox3 = (CheckBox) findViewById(R.id.myCheckBox3);
    		/* 设定OnCheckedChangeListener给三个CheckBox对象 */
    		mCheckBox1.setOnCheckedChangeListener(mCheckBoxChanged);
    		mCheckBox2.setOnCheckedChangeListener(mCheckBoxChanged);
    		mCheckBox3.setOnCheckedChangeListener(mCheckBoxChanged);
    	}
    
    	/* 声明并建构onCheckedChangeListener对象 */
    	private CheckBox.OnCheckedChangeListener mCheckBoxChanged = new CheckBox.OnCheckedChangeListener() {
    		/* implement onCheckedChanged方法 */
    		@Override
    		public void onCheckedChanged(CompoundButton buttonView,
    				boolean isChecked) {
    			// TODO Auto-generated method stub
    			/* 透过getString()取得CheckBox的文字字符串 */
    			String str0 = "所选的项目为: ";
    			String str1 = getString(R.string.str_checkbox1);
    			String str2 = getString(R.string.str_checkbox2);
    			String str3 = getString(R.string.str_checkbox3);
    			String plus = ";";
    			String result = "但是超过预算啰!!";
    			String result2 = "还可以再多买几本喔!!";
    			/* 任一CheckBox被勾选后,该CheckBox的文字会改变TextView的文字内容 * 三个对象总共八种情境 */
    			if (mCheckBox1.isChecked() == true & mCheckBox2.isChecked() == true
    					& mCheckBox3.isChecked() == true) {
    				mTextView1.setText(str0 + str1 + plus + str2 + plus + str3
    						+ result);
    			} else if (mCheckBox1.isChecked() == false
    					& mCheckBox2.isChecked() == true
    					& mCheckBox3.isChecked() == true) {
    				mTextView1.setText(str0 + str2 + plus + str3 + result);
    			} else if (mCheckBox1.isChecked() == true
    					& mCheckBox2.isChecked() == false
    					& mCheckBox3.isChecked() == true) {
    				mTextView1.setText(str0 + str1 + plus + str3 + result);
    			} else if (mCheckBox1.isChecked() == true
    					& mCheckBox2.isChecked() == true
    					& mCheckBox3.isChecked() == false) {
    				mTextView1.setText(str0 + str1 + plus + str2 + result);
    			} else if (mCheckBox1.isChecked() == false
    					& mCheckBox2.isChecked() == false
    					& mCheckBox3.isChecked() == true) {
    				mTextView1.setText(str0 + str3 + plus + result2);
    			} else if (mCheckBox1.isChecked() == false
    					& mCheckBox2.isChecked() == true
    					& mCheckBox3.isChecked() == false) {
    				mTextView1.setText(str0 + str2);
    			} else if (mCheckBox1.isChecked() == true
    					& mCheckBox2.isChecked() == false
    					& mCheckBox3.isChecked() == false) {
    				mTextView1.setText(str0 + str1);
    			} else if (mCheckBox1.isChecked() == false
    					& mCheckBox2.isChecked() == false
    					& mCheckBox3.isChecked() == false) {
    				mTextView1.setText(str0);
    			}
    		}
    	};

    4. 扩展学习与作业

    AndroidUI 设计CheckBox复选框用法

    http://www.eyeandroid.com/thread-10159-1-1.html

    作业:请简化Demo中的onCheckedChanged方法


    5.视频讲解
    http://www.eyeandroid.com/thread-10704-1-1.html

  • 相关阅读:
    Arm宣布将在Linux中应用事务内存扩展支持
    企业上云哪种形式的云更适合?
    AT&T推出云5G网络开源工具Airship
    GitHub源码攻击事件
    你应该选择哪种树莓派?
    Electron 5.0 发布
    Redox OS 发布 0.5 版
    经典的网络安全技术
    inux下:热插拔和模块是什么
    微软宣布全新命令行+脚本工具:PowerShell 7
  • 原文地址:https://www.cnblogs.com/eyeandroid/p/2788401.html
Copyright © 2020-2023  润新知