【问题标题】:how create one common onClickListener for multiple check boxes如何为多个复选框创建一个通用的 onClickListener
【发布时间】:2016-11-24 20:01:04
【问题描述】:

您好,我是 android 编程世界的新手,我遇到了这个问题,我想为视图中的所有多个复选框设置一个通用的 onClickListener 或 onCheckChangedListener。

在我浏览过的大多数论坛中,他们建议对每个复选框实施 OnClickListener,我觉得这不是一个好主意,并且觉得这是不必要的开销。 所以要求是我有与天相关的复选框,每一天代表周日到周六以及每一天。我需要在选中 Everyday 时取消选中所有选中的日期,并在选中任何其他日期时取消选中 EveryDay checkBox。

我尝试了以下代码,但控件从未到达 onClickListener 内部。

public class AddEditGroupActivity extends Activity 
        implements View.OnClickListener {

        public void onClick(View v) {
        if(v.getId() == R.id.addedit_restrict_byeveryday) {
            if(((CheckBox)v).isChecked()) {
                ((CheckBox) findViewById(R.id.addedit_restrict_bysunday)).setChecked(false);
                ((CheckBox) findViewById(R.id.addedit_restrict_bymonday)).setChecked(false);
                ((CheckBox) findViewById(R.id.addedit_restrict_bytuesday)).setChecked(false);
                ((CheckBox) findViewById(R.id.addedit_restrict_bywednesday)).setChecked(false);
                ((CheckBox) findViewById(R.id.addedit_restrict_bythursday)).setChecked(false);
                ((CheckBox) findViewById(R.id.addedit_restrict_byfriday)).setChecked(false);
                ((CheckBox) findViewById(R.id.addedit_restrict_bysaturday)).setChecked(false);
            }
        } else if(v.getId() != R.id.addedit_restrict_byeveryday) {
            if(((CheckBox)v).isChecked()) {
                ((CheckBox) findViewById(R.id.addedit_restrict_byeveryday)).setChecked(false);
            }
        }
    }
}

请提出完成这项任务的前进方向。

【问题讨论】:

    标签: android checkbox


    【解决方案1】:

    我想你可能想改用 radioButton。

    【讨论】:

    • 可以用单选按钮选择多天吗?
    • 谁投票否决了这个问题,这个问题有什么问题吗??你有什么想法
    • 不,如果它们属于同一组,则无法选择多个。我没有否决这个问题。
    • 谢谢,我知道你没有否决这个问题,但我随便问你是否发现我的问题有什么问题,有人否决了我?是的,我们不能使用单选按钮,但我的要求是我应该能够选择多天。
    【解决方案2】:
      public void onCheckboxClicked(View view) {
    
        boolean checked = ((CheckBox) view).isChecked();
    
        switch(view.getId()) {
            case R.id.sports:
                                if (checked)
                                    uChoice.add("sport");
                                else
                                    findAndRemove("sport");
    
                                break;
    
        }
    }
    

    还有你的布局文件

      <CheckBox
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Sports"
                android:id="@+id/sport"
                android:onClick="onCheckboxClicked"
                />
     <CheckBox
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Business"
                android:id="@+id/bus"
                android:layout_alignParentTop="true"
                android:layout_toRightOf="@+id/sport"
                android:layout_toEndOf="@+id/sport"
                android:onClick="onCheckboxClicked"/>
    

    【讨论】:

      猜你喜欢
      • 2013-04-03
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2018-11-17
      • 2014-05-20
      • 2015-10-16
      • 2022-01-02
      • 1970-01-01
      相关资源
      最近更新 更多