Utilisation de cet exemple de code de case à cocher de la liste extensible à titre de référence, j'essaie d'enregistrer et de maintenir l'état de la case à cocher. Cependant, des cases à cocher aléatoires sont cochées et décochées (ce qui déclenche mon processus d'enregistrement). OnCheckedChangeListener
avec les nouvelles valeurs ) lorsque je les fais défiler hors de vue, que je minimise leur groupe, ou même que je minimise/maximise un groupe voisin !
public Object getChild(int groupPosition, int childPosition) {
return colors.get( groupPosition ).get( childPosition );
}
public long getChildId(int groupPosition, int childPosition) {
return (long)( groupPosition*1024+childPosition ); // Max 1024 children per group
}
public View getChildView(final int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
View v = null;
if( convertView != null ) {
v = convertView;
} else {
v = inflater.inflate(R.layout.child_row, parent, false);
}
Color c = (Color)getChild( groupPosition, childPosition );
TextView color = (TextView)v.findViewById( R.id.childname );
if( color != null ) {
color.setText( c.getColor() );
}
TextView rgb = (TextView)v.findViewById( R.id.rgb );
if( rgb != null ) {
rgb.setText( c.getRgb() );
}
CheckBox cb = (CheckBox)v.findViewById( R.id.check1 );
cb.setChecked( c.getState() );
cb.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
colors.get(groupPosition).get(childPosition).setState(isChecked);
context.setColorBool(groupPosition, childPosition, isChecked);
Log.d("ElistCBox2", "listitem position: " +groupPosition+"/"+childPosition+" "+isChecked);
}
});
return v;
}
Je ne sais pas quel morceau de code pourrait être responsable de cela, donc toute suggestion sur ce qu'il faut inclure ici est la bienvenue. Mon code ne diffère de l'original que dans ma tentative de sauvegarder les valeurs.