Dans mon cas, j'ai deux affichage de texte et une case à cocher dans listview. J'utilise la classe ArrayAdapter pour définir les données dans textviews. Lorsque je sélectionne une case à cocher et que je défile dans la liste, des cases à cocher sont automatiquement sélectionnées. Je ne comprends pas pourquoi cela se passe ci-dessous est mon code s'il vous plaît regarder le code et donner la solution pour résoudre ce problème.Android listview avec case à cocher
public class Contacts_NumberActivity extends Activity {
/** Called when the activity is first created. */
String nameList[] = { "U", "A", "B", "C", "D", "E", "F", "G", "H",
"I", "J", "L", "M", "N", "O", "P", "Q" }, numberList[] = { "1",
"2", "3", "4", "5", "6", "7", "8", "9", "0", "1", "2", "3", "4",
"5", "6", "7" };
ListView contactList;
boolean[] checked;
ContactHolder holder = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
contactList = (ListView) findViewById(R.id.contact_list);
contactList.setAdapter(new ContactAdapter(this, R.layout.list_item,
nameList, numberList));
}
public class ContactAdapter extends ArrayAdapter<String> {
Context context;
int layoutResourceId;
String data[] = null;
String data1[] = null;
public ContactAdapter(Context context, int layoutResourceId,
String[] data, String[] data1) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
this.data1 = data1;
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
View row = convertView;
if (row == null) {
LayoutInflater inflater = ((Activity) context)
.getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ContactHolder();
holder.name = (TextView) row.findViewById(R.id.name);
holder.number = (TextView) row.findViewById(R.id.number);
holder.chkbox = (CheckBox) row.findViewById(R.id.checkBox1);
holder.chkbox
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(
CompoundButton buttonView, boolean isChecked) {
holder.chkbox.setChecked(isChecked);
System.out.println("Checked possition= "
+ isChecked);
}
});
row.setTag(holder);
} else {
holder = (ContactHolder) row.getTag();
}
holder.name.setText(data[position]);
holder.number.setText(data1[position]);
return row;
}
public class ContactHolder {
TextView name, number;
CheckBox chkbox;
}
}
}
Je suppose que le problème avec l'impression de votre listview.Veuillez vérifier votre listview il peut avoir des données répétées, c'est pourquoi vous vous sentez comme automatiquement case à cocher est sélectionné .check et laissez-moi savoir que – OnkarDhane
cela se produit lorsque j'ai cliqué sur une case à cocher et faites défiler la liste les cases à cocher ci-dessous sont également vérifiées. – user03
vérifier ci-dessous les liens, il peut vous aider http://windrealm.org/tutorials/android/listview-with-checkboxes-without-listactivity.php http://developmentality.wordpress.com/2010/11/05/of-rubber -stamps-and-checkboxes-pourquoi-votre-listview-is-broken/ –