#android #listactivity #android-arrayadapter
#Android #listactivity #android-arrayadapter
Вопрос:
Я создал ListActivity, расширяющий ArrayAdapter; каждый элемент списка состоит из 2 меток и 1 флажка. Он работает отлично, за исключением случаев, когда я снимаю флажок с одного из этих списков и прокручиваю вверх или вниз, делая эту проверку недоступной; проблема в том, что когда я возвращаю ранее снятый флажок, он проверяется…что не так с моим ListActivity? Это класс на основе ArrayAdapter:
private class DescrAdapter extends ArrayAdapter<StatDescriptor>{
private LayoutInflater inflater;
private final StatDescriptor[] descriptions;
private int layoutId;
public DescrAdapter(Context context, int res,StatDescriptor[] objects) {
super(context,res , objects);
this.inflater=LayoutInflater.from(context);
this.descriptions=objects;
this.layoutId=res;
}
public View getView(final int position, View rowView, ViewGroup parent) {
rowView = (RelativeLayout) inflater.inflate(layoutId, null);
TextView textName = (TextView) rowView.findViewById(R.id.StatName);
textName.setText(descriptions[position].getName());
TextView textDescr=(TextView) rowView.findViewById(R.id.StatDescr);
textDescr.setText(descriptions[position].getDescription());
CheckBox checkEnabled=(CheckBox) rowView.findViewById(R.id.checkStat);
checkEnabled.setChecked(descriptions[position].isEnabled());
checkEnabled.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
enabledStats[sortIndexes[position]]=!enabledStats[sortIndexes[position]];
}
});
return rowView;
}
}
Спасибо за вашу помощь.
Комментарии:
1. что означает «когда я вернусь», вы говорите о нажатии кнопки возврата? , или только прокрутка?
Ответ №1:
Вы используете descriptions[position]
для установки состояния флажка, но вы переворачиваете enabledStats[sortIndexes[position]]
. Итак, в следующий раз представление элемента будет воссоздано с исходным значением, которое вы не изменили ( descriptions[position]
) .