双击ListView Android中的项目

时间:2015-05-28 20:52:03

标签: android

当我点击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

但是我点击后添加白色重新着色。

1 个答案:

答案 0 :(得分: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();
        }
    });
    

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