Coment писал(а):
Верно ли я понимаю, что запись строк в массив будет осуществляться посредством цикла? Но как и куда записать количество чеков из списка? Я не прошу написать за меня код, но визуализация псевдо-модели была бы предпочтительна

Здравствуйте,
Для простого определения какие из строк выбраны(в каких чекбоксах стоит галочка) могу предложить:
В адаптере в методе getView находите чекбокс и присваиваете ему обработчик нажатия или сметы состояния
В этом обработчике в объект Map записываете состояние чекбокса.
Код: Выделить всё
private SparseBooleanArray itemChecked;
public MyAdapter(Context context, List<? extends Map<String, ?>> data,
int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
// TODO Auto-generated constructor stub
...
itemChecked = new SparseBooleanArray();
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
//Обращаю внимание что стоит FINAL INT POSITION
//инициализация элементов + объекта который будет возвращаться и тп и тд..
...
CheckBox ctv = (CheckBox) view
.findViewById(R.id.Ваш чекбокс); //находим чекбокс
// присваиваем чекбоксу
// обработчик
ctv.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
//находим чекбокс
CheckBox chk = (CheckBox) v
.findViewById(R.id.Ваш чекбокс);
itemChecked.put(position, chk.isChecked());
}
});
//Следующая строка не обязательна, однако бывают косяки с тем
//что при скроллинге спика позиции слетают, у меня такого не было
//но в интеренете много раз встречал что люди жалуются
//со следующей строчкой никогда ничего не слетит
ctv.setChecked(itemChecked.get(position));
return view;
}
//метод который будет передовать выбранные позиции
public SparseBooleanArray Name_Of_your_method()
{return itemChecked}
С адаптером закончили, вроде ничего не забыл.
теперь в активити, в которой у вас список расположен, в нужном месте(где необходимо получить выбранные
строки) делаем следующие
Код: Выделить всё
SparseBooleanArray sbArray = ВашАдаптер.Name_Of_your_method();
for (int i = 0; i < sbArray.size(); i++) {
int key = sbArray.keyAt(i);//получает ключ i'того элемента Мар в объекте sbArray
if (sbArray.get(key))//по ключу получает значение
//действия если пункт отмечен
else
//действия если не отмечен
}
Подводя итог у вас получился объект Мар который хранит в качестве ключей Позицию списка,
а в качестве значения по этому ключу Отмечен ли чекбокс или нет.
Есть куда проще метод
у списка устанавливаете setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
и используете функцию списка getCheckedItemPositions(), которая возвращает точно такой же объект SparseBooleanArray, как только что я описал вышел. Тоесть никаких действий с адаптером не требуется.
НО тут сразу возникает проблема нажатия на список, так как чекбокс весь фокус на себя забирает и событие нажатия именно на список не происходит. Можно чекбокс заменить на элемент CheckedTextView и тогда функция будет корректно возвращать выбранные пункты списка, НО чекбоксы будут неправильно отмечаться(нажмете на 1 выделится например 6)
Так что рекомендую использовать 1 метод.