I have a big Problem with my Listview and its Checkboxes... Every
thing is shown and works fine, until I click on one of the Checkboxes.
Then other Boxes are checked and sometimes even without checking the
one, I clicked.
I searched the web, but didn't find a solution that is working. Now
I'm hoping, someone of you, Guys, would be able to help to solve my
problem.

Enclosed is the Code of my Customadapter, which is used for filling
the list.

package org.openintents.filemanager;

import java.util.ArrayList;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.CompoundButton.OnCheckedChangeListener;

public class CustomSettingsAdapter extends BaseAdapter{

 private static ArrayList<SettingItem> settingsArrayList;
 private LayoutInflater mInflater;

 public CustomSettingsAdapter(Context context, ArrayList<SettingItem>
sitems)
 {
  settingsArrayList = sitems;
  mInflater = LayoutInflater.from(context);
 }

 public int getCount()
 {
  return settingsArrayList.size();
 }

 public Object getItem(int position)
 {
  return settingsArrayList.get(position);
 }

 public ArrayList<SettingItem> getItemList()
 {
  return settingsArrayList;
 }

 public long getItemId(int position)
 {
  return position;
 }

 public View getView(final int position, View convertView, ViewGroup
parent) {
  final ViewHolder holder;
  if (convertView == null)
  {
   convertView = mInflater.inflate(R.layout.settings_item, null);
   holder = new ViewHolder();
   holder.txtName = (TextView)
convertView.findViewById(R.id.setting_name);
   holder.details = (TextView)
convertView.findViewById(R.id.setting_detail);
   holder.cb = (CheckBox) convertView.findViewById(R.id.check);
   convertView.setTag(holder);
  }
  else
  {
   holder = (ViewHolder) convertView.getTag();
  }

  holder.txtName.setText(settingsArrayList.get(position).getName());
  holder.details.setText(settingsArrayList.get(position).getPath());
  holder.cb.setChecked(settingsArrayList.get(position).getState());
  int[]tags = new int[2];
  tags[0]= position;
  tags[1]= 0;
  holder.cb.setTag(tags);

  holder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {

   @Override
   public void onCheckedChanged(CompoundButton buttonView, boolean
isChecked) {

    int[]i=(int[])holder.cb.getTag();
    settingsArrayList.get(i[0]).setState(isChecked);
    notifyDataSetChanged();
   }
  });

  return convertView;
 }

 static class ViewHolder
 {
  TextView txtName;
  TextView details;
  CheckBox cb;
 }
}

Thank you very much in advance for helping.
Best regards
Tobi

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to