2011-07-29 75 views
0

我有一個問題,我自定義listviewcheckbox複選框在列表視圖中自動滾動列表。

當我滾動項目時,一些checkbox自動checked沒有點擊checkbox

任何人都可以幫助我嗎?

+1

顯示一些代碼和XML工作正常。 – Siten

+0

更具體地說,你的adapter.getView的代碼... –

回答

0

這意味着,甌選擇一個複選框和Android將隨機選擇,你應該使用...

if(tempVector.get(position)){ 
      holder.box.setChecked(true); 
     } 
     else{ 
      holder.box.setChecked(false); 
     } 

試試這個,它爲我工作。

+0

什麼是** tempVector **請澄清一下... –

+0

在我的場景中... for(int i = 0; i Siten

+0

是的傢伙。如果另一個用戶將面臨這個問題,他會看到這個問題,然後他可以得到正確的答案..我希望你能明白.. –

0

public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 

     final ViewHolder holder; 
     final Season season = (Season) getGroup(groupPosition); 
     if (convertView == null) { 
      LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = vi.inflate(R.layout.season, parent, false); 
      holder = new ViewHolder(); 
      holder.title = (TextView) convertView.findViewById(R.id.season_title); 
      holder.checkBox = (CheckBox) convertView.findViewById(R.id.season_check_box); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.title.setText(season.getTitle()); 
     holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       season.setChecked(isChecked); 
       adapter.notifyDataSetChanged(); 
      } 
     }); 

     holder.checkBox.setChecked(season.isChecked()); // position is important! Must be before return statement! 
     return convertView; 
    } 

    protected class ViewHolder { 
     protected TextView title; 
     protected CheckBox checkBox; 
    } 
+0

任何需要解釋此代碼的人都應該關注[Android Google IO 2009 UI性能](http://www.youtube.com/watch?v=N6YdwzAvwOA) – Merlin