title: Listview with custom adapter containing CheckBoxes
body: <p>I have a ListView which uses a custom adapter as shown:</p>
  
  <pre><code>private class CBAdapter extends BaseAdapter implements OnCheckedChangeListener{
  
      Context context;
      public String[] englishNames;
      LayoutInflater inflater;
      CheckBox[] checkBoxArray;
      LinearLayout[] viewArray;
      private boolean[] checked;
  
      public CBAdapter(Context con, String[] engNames){
          context=con;
          englishNames=engNames;
          inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          checked= new boolean[englishNames.length];
          for(int i=0; i&lt;checked.length; i++){
              checked[i]=false;
              //Toast.makeText(con, checked.toString(),Toast.LENGTH_SHORT).show();
          }
          checkBoxArray = new CheckBox[checked.length];
          viewArray = new LinearLayout[checked.length];
      }
  
      public int getCount() {
          return englishNames.length;
      }
  
      public Object getItem(int position) {
          // TODO Auto-generated method stub
          return null;
      }
  
      public long getItemId(int position) {
          // TODO Auto-generated method stub
          return 0;
      }
  
      public View getView(int position, View convertView, ViewGroup parent) {
  
          if(viewArray[position] == null){
  
              viewArray[position]=(LinearLayout)inflater.inflate(R.layout.record_view_start,null);
  
              TextView tv=(TextView)viewArray[position].findViewById(R.id.engName);
              tv.setText(englishNames[position]);
  
              checkBoxArray[position]=(CheckBox)viewArray[position].findViewById(R.id.checkBox1);
          }
  
          checkBoxArray[position].setChecked(checked[position]);
          checkBoxArray[position].setOnCheckedChangeListener(this);
          return viewArray[position];
      }
  
  
      public void checkAll(boolean areChecked){
          for(int i=0; i&lt;checked.length; i++){
              checked[i]=areChecked;
              if(checkBoxArray[i] != null)
                  checkBoxArray[i].setChecked(areChecked);
          }
          notifyDataSetChanged();
      }
  
      public void onCheckedChanged(CompoundButton cb, boolean isChecked) {
          for(int i=0; i&lt;checked.length; i++){
              if(cb == checkBoxArray[i])
                  checked[i]=isChecked;
          }
  
  
  
  
      }
      public boolean itemIsChecked(int i){
          return checked[i];
      }
  
  }
  </code></pre>
  
  <p>The layouts are fairly simple so I won't post them unless anyone thinks they are relevant.</p>
  
  <p>The problem is that some of the CheckBoxes are not responding. It seems to be the ones that are visible when the layout is first displayed. Any that you have to scroll down to work as expected. </p>
  
  <p>Any pointers appreciated.</p>