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

多选项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在使用上的差异。

你可能感兴趣的:(String,user,活动,Class,扩展,import)