Android 单击不同时间的按钮

Android 单击不同时间的按钮,android,button,sharedpreferences,onclicklistener,Android,Button,Sharedpreferences,Onclicklistener,我有一个用于8个复选框的按钮,当我点击按钮时,我想要一段代码运行,例如代码中的案例1,用于在chk1(note.done1)上显示勾号。当我第二次点击按钮时,我的应用程序识别chk1被选中,现在检查chk2(note.done2)以及另外6个复选框 但这段代码是错误的,因为当我点击按钮时,chk1、chk3和chk5都是真的。我还尝试了else if和Sharedpreferences以及array 我不能使用ischecked()方法,因为我将listview用于1000(更少)项。我可以使用

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

但这段代码是错误的,因为当我点击按钮时,chk1、chk3和chk5都是真的。我还尝试了else if和Sharedpreferences以及array

我不能使用ischecked()方法,因为我将listview用于1000(更少)项。我可以使用note.done where链接到每个项中的复选框。我也可以使用array where链接到每个复选框和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();
        }
    });

为什么不使用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()方法,因为我将listview用于1000项。我可以使用note.done where链接到每个项中的复选框。您可以尝试在数据库中签入状态为0的第一个复选框。或者,您可以设置一个全局变量,该变量的点击次数为按钮的点击次数。