Android:无意中检查了ListView CheckBox

时间:2011-05-18 17:01:04

标签: android checkbox scroll android-listview

我有一个ListView,它是一个标题栏下方的布局和页脚栏上方的布局。 ListView的每一行都包含一个带有CheckBox和TextView的LinearLayout。现在,当我有更多行可以一次显示时,您当然可以向下或向上滚动。但是,一旦我向下或向上滚动,就会自动检查第一个和/或最后一个CheckBox。我的手指远离您选择复选框的位置。可能是什么导致了这个?  注意我在这里使用了代码:http://www.anddev.org/checkbox_text_list___extension_of_iconified_text_tutorial-t771.html

1 个答案:

答案 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 ),这可能导致问题。