【问题标题】:Simple checkbox logic简单的复选框逻辑
【发布时间】:2017-02-01 12:03:17
【问题描述】:

在我们班上给我的问题是,您可以选择选中标记为(A、B、C、D)的 4 个复选框。每个复选框的值为 10。如果选中一个,EditText 中显示的数字将为 10,如果选中两个,则显示为 20,依此类推。

谁能告诉我 onClick 类在这方面的表现如何?谢谢!

【问题讨论】:

  • 如果你想在 EditText 中一次只显示一个值,我认为你应该使用 RadioButton 而不是 Checkbox。
  • 记数。在侦听器中选中复选框时增加计数器,反之亦然。根据当前计数 *10 更新编辑文本。

标签: android checkbox oncheckedchanged


【解决方案1】:

创建四个具有不同 ID 的复选框,例如 CB_One、CB_Two、CB_Three、CB_Four,ID 为 cb_one、cb_two、cb_three、cb_four。为所有人设置 onCheckedChangedListener,然后在 checkChenged 上将值作为 10,20,30 40 传递给 editText。

CB_One.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

   @Override
   public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
        if(isChecked){
               editText.setText("10");
        } else{
              editText.setText("");
        }
   }
 }

);

CB_Two.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

   @Override
   public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
        if(isChecked){
               editText.setText("20");
        } else{
              editText.setText("");
        }
   }
 }

);

CB_Three.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

   @Override
   public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
        if(isChecked){
               editText.setText("30");
        } else{
              editText.setText("");
        }
   }
 }

);

CB_Four.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

   @Override
   public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
        if(isChecked){
               editText.setText("40");
        } else{
              editText.setText("");
        }
   }
 }

);

【讨论】:

  • 保留一个计数器并有一个通用监听器来减少代码,从而使其更易于管理。
【解决方案2】:

像这样使用复选框的 OnCheckChangeListener

checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

   @Override
   public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
        if(isChecked){
               // increment your counter by 10
        } else{
              // Decrement your counter by 10
        }
   }
 }

);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多