【问题标题】:click a button for diffrent time单击不同时间的按钮
【发布时间】:2015-04-26 15:27:13
【问题描述】:

我有一个用于 8 个复选框的按钮,当我单击按钮时,我希望运行一段我的代码,例如此代码中的案例 1,用于在 chk1 (note.done1) 上显示刻度。当我第二次单击时在按钮上,我的应用程序识别 chk1 已检查,现在检查 chk2(note.done2) 以及另外 6 个 CheckBox。

但是这段代码是错误的,因为当我点击按钮时,chk1 和 chk3 和 chk5 是真的。我也在尝试 else if 和 Sharedpreferences 和数组。

我不能使用 ischecked() 方法,因为我使用 listview 和 1000(更少)项目。我可以使用 note.done 链接到每个项目中的复选框。我可以使用数组链接到每个复选框和 sqlite也是!

那么谁能帮帮我?

 btnOk.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

            switch (G.result_s1[position]) {
                case 0: {
                    note.done1 = true;
                    note.c = Color.RED;
                    G.database_s.execSQL("UPDATE mystate SET s1='1' WHERE s_id=" + (position + 1));
                    G.result_s1[position] = 1;
                    //AdapterNote.img.setBackgroundColor(Color.CYAN);
                }
                    break;

                case 1:

                {
                    note.done2 = true;
                    note.c = Color.GREEN;
                    G.database_s.execSQL("UPDATE mystate SET s2='1' WHERE s_id=" + (position + 1));
                    G.result_s2[position] = 1;

                }

                    break;

            }

            switch (G.result_s3[position]) {
                case 0: {

                    note.done3 = true;
                    note.c = Color.MAGENTA;
                    G.database_s.execSQL("UPDATE mystate SET s3='1' WHERE s_id=" + (position + 1));
                    G.result_s3[position] = 1;

                }
                    break;
                case 1: {
                    note.done4 = true;
                    note.c = Color.YELLOW;
                    G.database_s.execSQL("UPDATE mystate SET s4='1' WHERE s_id=" + (position + 1));
                    G.result_s4[position] = 1;
                }
                    break;
            }

            dialog.dismiss();
            finish();
        }
    });

【问题讨论】:

    标签: android button sharedpreferences onclicklistener


    【解决方案1】:

    为什么不使用 ischecked()?

    每当您单击按钮时,您都会选中另一个复选框

    btnOk.setOnClickListener(new OnClickListener() {
    
        @Override
        public void onClick(View arg0) {
              if(!checkbox1.ischecked()){
                  // check checkbox1
              }else if(checkbox1.ischecked()){
                // check checkbox2
              }else if(checkbox1.ischecked() && checkbox2.ischecked()){
                // check checkbox3
              }....
        }
     }
    

    【讨论】:

    • 我不能使用 ischecked() 方法,因为我使用带有 1000 个项目的列表视图。只是我可以使用 note.done 链接到每个项目中的复选框。
    • 您可以尝试在数据库中检查状态为0的第一个复选框。或者您可以设置一个全局变量,将点击次数设为按钮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多