Кратко изучая код, представленный по указанной ссылке, я вижу следующее:
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 ), который может вызывать проблему.