android--消费券采购列表实例

本文介绍了一个CheckBox组件的应用案例,展示了如何通过CheckBox.setOnCheckedChangeListener监听用户的选择,并实时更新显示选定的项目列表。

多选项CheckBox的应用

范例说明

使用过消费券吗?总额度只有3600元的消费券,虽然活动已经宣告结束,但也可以当成一个限制使用额度的范例示范。这个范例程序要示范的是CheckBox.setOnCheckedChangeListener在程序中设计3CheckBox核取项,分别表示三种物品列表,当User勾选其中一个物品,就在TextView里显示已选择的物品列表。

程序的关键在同时监听3CheckBox.OnCheckedChangeListener的状态,并在CheckBox. onChecked()方法中,重组所有被勾选的物品文字。

范例程序

src/irdc.ex04_05/EX04_05.java

主程序的重点在于构造3CheckBox的对象,以及一个TextView对象,并通过setOnChecked ChangeListener实现onCheckedChanged()方法来更新TextView文字。

 

/* import程序略 */

 

public class EX04_05 extends Activity

{

  /*声明对象变量*/

  private TextView mTextView1;

  private CheckBox mCheckBox1;

  private CheckBox mCheckBox2;

  private CheckBox mCheckBox3;

 

  /** 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);

      }

    }

  };

}

 

扩展学习

读者可以将OnCheckedChangeListener更改为OnTouchListener(屏幕触控事件),方法如下:

 

private CheckBox.OnTouchListener mCheckBoxTouch =

new CheckBox.OnTouchListener()

{

  @Override

  public boolean onTouch(View v, MotionEvent event)

  {

    // TODO Auto-generated method stub

    /* 判断在触控笔指压此控件时的状态 */

    if(mCheckBox1.isChecked()==false)

    {

      /*当触控笔放开后的动作*/

    }

    else if(mCheckBox1.isChecked()==true)

    {

      /*当触控笔压下后的动作*/

    }

    return false;

  }

};

 

请试着比较OnCheckedChangeListenerOnTouchListener在使用上的差异。

MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值