2011-05-18 71 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