2015-05-28 60 views
0

当我点击ListView的第一项时,第一项被选中。但是当我向下滚动时,第12项也被选中,但我没有;点击第12项。为什么它发生了?在ListView中双击项目Android

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

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

但我UTEM点击后加入白改色。

+0

考虑提供的完整的代码你'getView()'方法 –

+0

我认为你正面临着类似的问题,我有一个前两天:http://stackoverflow.com/questions/30424912/change-item -background-color-in-simple-listview – Ruocco

回答

1

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

基本上,当你向下滚动你列出,它回收目前的状态,以及连接到它的听众。我解决了这个问题

一种方式是(suposing你的清单是用Java称为check):

  • 创建一个布尔数组(我们将其命名为listCheck),大小相同的复选框,所有值假
  • 写在你的适配器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值。这是可行的,因为布尔数组不会被回收。

+1

没有必要创建新的数组 - 很明显,将布尔值添加到初始对象,其数组显示使用ListView –

+0

约定@OlegOsipenko,但我认为这样更容易了解。 –