Android `listView`with`checkBox`只允许2“;勾选“;选项,阻止其他选项

Android `listView`with`checkBox`只允许2“;勾选“;选项,阻止其他选项,android,listview,multipleselection,Android,Listview,Multipleselection,我更改了代码,并用单行.xml创建了一个自定义的列表视图。 我有些东西在工作,但我觉得我的逻辑混乱了。 目标仍然是一样的,只允许2个“检查”,并在2个“检查”为true时阻止其他可能性。但也要改变“支票”所做的 e、 g: 第一阶段 [十] -1 [十] -2 []-3(阻止单击) 第二阶段 [十] -1 []2 []-3 第三阶段 [十] -1 []2;(阻止单击) [十] -3 这有什么意义吗 这是我的复选框的代码。setOnCheckedChangeListener(新的OnC

我更改了代码,并用
单行.xml
创建了一个自定义的
列表视图。
我有些东西在工作,但我觉得我的逻辑混乱了。
目标仍然是一样的,只允许2个“检查”,并在2个“检查”为
true
时阻止其他可能性。但也要改变“支票”所做的

e、 g: 第一阶段

  • [十] -1
  • [十] -2
  • []-3(阻止单击)
第二阶段

  • [十] -1
  • []2
  • []-3
第三阶段

  • [十] -1
  • []2;(阻止单击)
  • [十] -3
这有什么意义吗

这是我的
复选框的代码。setOnCheckedChangeListener(新的OnCheckedChangeListener(){


解决了的 我在这里看到了答案:

我的代码是:

checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
@凌驾

public void onCheckedChanged(CompoundButton buttonView,
                    boolean isChecked) {
                if (isChecked && incr >= 2) {
                    checkBox.setChecked(false);
                    Toast.makeText(context, "Somente 2 ", Toast.LENGTH_LONG)
                            .show();
                } else {
                    // the checkbox either got unchecked
                    // or there are less than 2 other checkboxes checked
                    // change your counter accordingly
                    if (isChecked) {
                        incr++;
                    } else {
                        incr--;
                    }

                    // now everything is fine and you can do whatever
                    // checking the checkbox should do here
                }
            }
        });

创建一个整数变量,称之为incr,并为每个选择增加它(在listview侦听器上),如果值超过两个,则停止并在toast上显示消息,这将是一种简单而棘手的方法。

这不是确切的答案,但可能会对您有所帮助。 xml文件

java文件

RadioGroup types=(RadioGroup)findViewById(R.id.types);

  switch (types.getCheckedRadioButtonId()) {
    case R.id.sit_down:
      r.setType("sit_down");
      break;

    case R.id.take_out:
      r.setType("take_out");
      break;

    case R.id.delivery:
      r.setType("delivery");
      break;`

和。

但是我已经有int'cont=listV.getCheckedItemCount()了'对于选中的项…或者它不是这样工作的?您需要在onItemClick侦听器中增加cont的值,并在onItemClick侦听器之前检查条件,并将cont变量声明为全局变量。嗯…为什么在
onItemClick()上增加
cont
?它不能像我那样在onItemClick上吗?并检查条件?我该怎么做?谢谢你,对你的麻烦表示抱歉:/n不,你误解了,我说要在onItemClick()侦听器中增加值,如果(计数>2)检查条件,在此侦听器之前执行您所需的操作。我有返回所选项目数的
cont=listV.getCheckedItemCount()
。我需要一个像您所说的“int incr”,以查看该数字是否大于2?但我不明白如何在侦听器之前“阻止”它:/谢谢您的回答!我将尝试并发布新闻:)嘿!很抱歉反应太晚了,但是我还赶上了其他事情。我更改了我的代码(现在将更新),并创建了一个自定义的
列表视图
来设置复选框。我既不使用
单选按钮也不使用多选。有什么想法吗?只是编辑了它…有什么想法吗?
RadioGroup types=(RadioGroup)findViewById(R.id.types);

  switch (types.getCheckedRadioButtonId()) {
    case R.id.sit_down:
      r.setType("sit_down");
      break;

    case R.id.take_out:
      r.setType("take_out");
      break;

    case R.id.delivery:
      r.setType("delivery");
      break;`