У меня есть список с пользовательским адаптером массива, и я пытаюсь выяснить, как сохранить состояние проверенных позиций.Я думал о сохранении позиции флажка в массиве int каждый раз, когда проверяется элемент, а затем в getView, если массив содержит число, которое он установит isChecked () == true.Тем не менее, я не знаю, как искать в массиве.Любая помощь будет отличной!Вот некоторый базовый код на адаптере:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final Contact c = (Contact) getItem(position);
final ViewHolder viewHolder = new ViewHolder();
// if the array item is null, nothing to display, just return null
if (c == null) {
return null;
}
LayoutInflater inflater = (LayoutInflater)
getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
TwoLineListItem view;
if (convertView == null) {
view = (TwoLineListItem) inflater.inflate(resourceId, parent, false);
} else {
view = (TwoLineListItem) convertView;
}
final int pos = position;
final SharedPreferences myprefs = PreferenceManager.getDefaultSharedPreferences(getContext());
final SharedPreferences.Editor editor = myprefs.edit();
viewHolder.checkbox = (CheckBox)view.findViewById(R.id.checkbox);
viewHolder.checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (buttonView.isChecked()){
contactInfo.add(pos+","+c.getName()+","+c.getNumber());
StringBuilder sb = new StringBuilder();
for (String s : contactInfo)
{
sb.append(s);
sb.append("\t");
}
editor.putString("contacts", sb.toString()).commit();
}else {
contactInfo.remove(pos+","+c.getName()+","+c.getNumber());
StringBuilder sb = new StringBuilder();
for (String s : contactInfo)
{
sb.append(s);
sb.append("\t");
}
editor.putString("contacts", sb.toString()).commit();
}
}
});