Вы не должны использовать флажки в ListView, я предпочитаю использовать TableLayout для них.Однако, если вы хотите использовать ListView, рассмотрите следующие предыдущие вопросы: -
Состояние сохранения Android-флажка в ListView с адаптером курсора
Поиск состояния Checked ofфлажок в настраиваемом представлении списка
Код не расширяет ListViewActivity, но имеет просмотр списка
Существует множество других вопросов по этой теме, рассмотрите возможность поискадля них тоже.
РЕДАКТИРОВАТЬ: Пример динамического TableLayout для замены ListView
XML: -
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableLayout
android:id="@+id/table"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</TableLayout>
</ScrollView>
Отрывок кода в Java: -
TableLayout table=(TableLayout)findViewByid(R.id.table);
ArrayList<CheckBox> cbData=new ArrayList<CheckBox>();
for(int i=0;i<rowCount;i++){
TextView t1=new TextView(this);
t1.setText("Text1");
TextView t2=new TextView(this);
t2.setText("Text2");
CheckBox cb=new CheckBox(this);
TableRow row=new TableRow(this);
row.addView(t1);
row.addView(t2);
row.addView(cb);
cbData.add(cb);
table.addView(row);
}
Используя приведенный выше код, вы можете добавить столько строк, сколько хотите в TableLayout, и поскольку TableLayout не повторяет свой вид, вам не нужно будет кэшировать данные и состояние флажка.Для доступа к флажкам вы можете использовать метод cbData.get (index).Намного проще, чем кодировать для кэширования состояния флажка.