当我点击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
但是我点击后添加白色重新着色。
答案 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值。这是有效的,因为布尔数组不会被回收。