Я работал над этим приложением, но столкнулся с проблемой, которую мне не удалось выяснить. У меня есть просмотр списка, который заполняется содержимым от адаптера, и каждая строка имеет свою конкретную информацию (Uniform). Проблема возникает, когда я пытаюсь получить значение флажка, найденного в этой конкретной строке.
Код, указанный ниже:
Я создаю объект AlertDialog, чтобы получить информацию от пользователя. Мой код компоновки состоит из LinearLayout в горизонтальной ориентации с 3 элементами: изображение, текст, флажок. Я создаю свой AlertDialog с R.layout.listview_layout
, который я создал.
Однако я попытался получить CheckBox View от адаптера; когда я смотрю на него через cb.isChecked (), независимо от того, в какой строке я нахожусь, он всегда непроверен (иначе false). Для дальнейшей отладки я взял тот же адаптер и извлек текст по той же методологии, и он вернул конкретную информацию об этой строке, как и должно быть.
Есть идеи, как с этим справиться?
Проще говоря:
Я просто хотел бы получить значение CheckBox в каждой строке
c = help.returnContacts();</p>
<pre><code> AlertDialog.Builder ab = new AlertDialog.Builder(this);
ab.setTitle("Select contacts");
final SimpleCursorAdapter adapter = new SimpleCursorAdapter(
getApplicationContext(), R.layout.listview_layout, c,
new String[] { ClientOpenDbHelperUtility.COL_NAME,
ClientOpenDbHelperUtility.COL_SEL }, new int[] {
R.id.txt_name, R.id.cb_select });
ab.setAdapter(adapter, null);
ab.setPositiveButton("Confirm", new Dialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Cursor c = adapter.getCursor();
for (int i = 0; i < adapter.getCount(); i++) {
CheckBox cb = (CheckBox) adapter.getView(i, null, null)
.findViewById(R.id.cb_select);
TextView t = (TextView) adapter.getView(i, null, null)
.findViewById(R.id.txt_name);
Log.d("DEBUG", "Checked = " + cb.isChecked());
Log.d("DEBUG", "Message = " + t.getText().toString());
if (cb.isChecked()) {
help
.updateSelection(
c
.getColumnIndex(ClientOpenDbHelperUtility.COL_UID),
true);
} else {
help
.updateSelection(
c
.getColumnIndex(ClientOpenDbHelperUtility.COL_UID),
false);
}
}
c.close();
help.closeAll();
}
});
ab.show();
}
Спасибо за чтение!