2015-09-20 33 views
0

我的ListView自定義適配器與複選框行爲以奇怪的方式。當我檢查任何複選框並上下滾動,然後我的應用程序隨機檢查複選框。我很困惑。爲什麼此ListView自定義適配器與CheckBoxes行爲奇怪的方式?

這裏是getView功能

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 

    LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

final ViewHolder holder; 
    if (convertView == null) { 
     convertView =inflater.inflate(R.layout.activity_main, parent, 
       false); 
     holder = new ViewHolder(); 

     holder.checkBox = (CheckBox) convertView.findViewById(R.id.chkbox); 
     convertView.setTag(holder); 

    } else { 
     holder = (ViewHolder) convertView.getTag(); 


    } 
    holder.checkBox.setText(Name[position]); 
    return convertView; 
} 

ViewHoder.java類

public class ViewHolder { 
CheckBox checkBox; 
} 

字符串中MainActivity.java類

String[] names=new String[]{ 
      "Name1" , "Name2" , "Name3" ,"Name4" , "Name5" , "Name6","Name7"   , "Name8" , "Name9","Name10" , "Name11" , "Name12"}; 

回答

0

我注意到肯定,如果這是原因,但它可能是以下之一:

  • 使您的視圖持有者類爲靜態,以便只有一個它的實例。
  • 爲什麼每次調用getView時都會使佈局膨脹(它被稱爲LOT);在構造函數中執行併爲以後的訪問分配一個成員變量。
  • 我不認爲這是必需的,但請確保您將複選框初始化爲checked = false。

否則,你的代碼對我來說看起來很好,我不在我的開發機器上,所以我無法測試我的建議。希望能幫助到你。

0

你需要設置「檢查」在getView複選框的狀態(例如你打電話之後的setText。

眼下,一個視圖得到它的,當你點擊它,然後該複選框選中視圖在其他位置被重新使用,但保留它的狀態。

相關問題