【问题标题】:Double click item in ListView Android在 ListView Android 中双击项目
【发布时间】:2015-05-29 05:41:08
【问题描述】:

当我单击 ListView 的第一项时,第一项被选中。但是当我向下滚动时,第 12 项也被选中,但我没有点击第 12 项。为什么会这样?

第一屏:http://oi59.tinypic.com/9iw7b8.jpg 第二屏:oi60.tinypic.com/1zxunv4。 jpg [删除空格]

我的源代码是这样的: http://startandroid.ru/en/uroki/vse-uroki-spiskom/85-urok-44-sobytija-v-listview.html

但我在 utem 点击后添加了白色重新着色。

【问题讨论】:

标签: android


【解决方案1】:

这个问题在这里得到了回答:Checking a checkbox in listview makes other random checkboxes checked too

基本上,当您向下滚动列表时,它会回收其当前状态以及附加到它的侦听器。

我解决此问题的一种方法是(假设您的列表在 java 中称为check):

  • 创建一个布尔数组(我们将其命名为listCheck),大小与您的复选框相同,所有值均为 false
  • 在你的适配器中写入getView 方法:

    check.setChecked(listCheck[position]); //listCheck is your array of booleans.
    check.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            CheckBox checkBox = (CheckBox) v.findViewById(R.id.checkEspecialidade);
            listCheck[position] = check.isChecked();
        }
    });
    

    基本上,我们将检查值设置为与数组中的值相同,当用户单击它时,我们也会更改数组中该检查的值。之所以有效,是因为布尔数组没有被回收。

【讨论】:

  • 不需要创建新的数组——很明显,给初始对象添加布尔值,数组使用ListView显示
  • 同意@OlegOsipenko,但我认为这样更容易理解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多