Android - ListView: as caixas de seleção não ficam marcadas

Tenho uma lista de exibição, com cerca de 200 itens, implementei um ArrayAdapter personalizado para as caixas de seleção. Eu uso um SparseBooleanArray para armazenar o valor das caixa

Tudo isso funciona bem, mas não consigo atualizar graficamente a verificação das caixas. Se o usuário clicar, a caixa está marcada. Mas, se eu chamar setChecked no meu código, ele não terá impacto na própria caixa (portanto, mesmo que seu valor seja verdadeiro, não será marcado).

Testei tentando definir todas as caixas como verdadeiras e sem sorte, mesmo que todas estejam marcadas, elas não mostram que são. Não tenho certeza do código que você precisa ver, mas eu introduzi meu adaptador para uma boa medida:

class CheckBoxArrayAdapter extends ArrayAdapter<String> implements CompoundButton.OnCheckedChangeListener { 
private SparseBooleanArray checkedBoxes; 
Context context;

public CheckBoxArrayAdapter(Context context, int resource, List<String> objects) { 
    super(context, resource, objects); 
    checkedBoxes = new SparseBooleanArray();
    this.context = context;
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    final CheckBox view = (CheckBox) super.getView(position, convertView, parent);
        //if(convertView == null) {
            //convertView = view.inflate(context, R.layout.list_item, null);
        //}
    view.setTag(position);
    view.setChecked(checkedBoxes.get(position, false));
    System.out.println(view.getTag() + ": " + view.isChecked());
    view.setOnCheckedChangeListener(this); 
    return view; 
} 

public boolean isChecked(int position) { 
    return checkedBoxes.get(position, false); 
} 
public void setChecked(int position, boolean isChecked) { 
    checkedBoxes.put(position, isChecked); 
    notifyDataSetChanged(); 
} 

public void toggle(int position) { 
    setChecked(position, !isChecked(position)); 
} 

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    checkedBoxes.put((Integer) buttonView.getTag(), buttonView.isChecked()); 
} 

}

Obrigado rapazes

questionAnswers(1)

yourAnswerToTheQuestion