2011-05-18 27 views
0

我有一个ListView,它是布局在页眉栏和页脚上方布局之下的布局。 ListView的每一行都包含一个带有CheckBox和TextView的LinearLayout。现在,当我可以同时显示更多行时,您当然可以向下或向上滚动。但是,一旦我向下滚动或向上滚动第一个和/或最后一个CheckBox时,它将被自动检查。我的手指不在你要选择复选框的地方。什么可能导致这个? 请注意我用的代码在这里:http://www.anddev.org/checkbox_text_list___extension_of_iconified_text_tutorial-t771.htmlAndroid:无意中检查了ListView CheckBox

+0

该网址无效 – jsp 2011-05-18 17:13:54

回答

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(),这可能会引起问题。

+0

感谢Benni,我会检查出来。嗯,上面引用的页面上的代码不会对其进行硬编码。但它必须在下载的代码.... – Mike6679 2011-05-19 02:30:45

+0

是的,我在看下载的代码,因为页面上的代码并不包含所有的功能 – berni 2011-05-19 08:34:18