проще!

я есть просмотр списка, содержащий около 200 элементов, я реализовал собственный ArrayAdapter для флажков. Я использую SparseBooleanArray для хранения значения полей.

Все это прекрасно работает, но я не могу графически обновить проверку флажков. Если пользователь нажимает, то флажок установлен. Но, если я вызываю setChecked в моем коде, это не влияет на сам блок (поэтому, даже если его значение равно true, оно не отмечено).

Я проверил, пытаясь установить все флажки в true и не повезло, хотя они все отмечены, они не показывают, что они есть. Не уверен, какой код вам нужно увидеть, но я точно добавил в свой адаптер:

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()); 
} 

}

Спасибо, парни!

Ответы на вопрос(1)

Ваш ответ на вопрос