我有一个ListView,它是一个标题栏下方的布局和页脚栏上方的布局。 ListView的每一行都包含一个带有CheckBox和TextView的LinearLayout。现在,当我有更多行可以一次显示时,您当然可以向下或向上滚动。但是,一旦我向下或向上滚动,就会自动检查第一个和/或最后一个CheckBox。我的手指远离您选择复选框的位置。可能是什么导致了这个? 注意我在这里使用了代码:http://www.anddev.org/checkbox_text_list___extension_of_iconified_text_tutorial-t771.html
答案 0 :(得分:1)
简要介绍相关链接下的代码,我可以看到以下内容:
public View getView(int position, View convertView, ViewGroup parent){
CheckBoxifiedTextView btv;
if (convertView == null) {
btv = new CheckBoxifiedTextView(mContext, mItems.get(position));
} else { // Reuse/Overwrite the View passed
// We are assuming(!) that it is castable!
CheckBoxifiedText src = mItems.get(position);
btv = (CheckBoxifiedTextView) convertView;
btv.setCheckBoxState(src.getChecked()); // set checked state
btv = (CheckBoxifiedTextView) convertView;
btv.setText(mItems.get(position).getText());
}
return btv;
}
如您所见,在滚动期间重复使用视图,并使用方法 setCheckBoxState 设置复选框状态。 然后在 CheckBoxifiedTextView 中,您可以找到:
public void setCheckBoxState(boolean bool)
{
mCheckBox.setChecked(mCheckBoxText.getChecked());
mCheckBoxText.setChecked(true); // <-- HERE !
}
其中第4行有硬编码的setChecked( true ),这可能导致问题。