Мне удалось создать функцию ListActivity, которая отображает верхний и нижний колонтитулы и помещена между ними в пользовательский макет, содержащий в каждой строке три флажка и имя контакта (чтение из базы данных контактов). Я использую SimpleCursorAdapter для отображения этой информации. Моя проблема в получении OnListItemClicked () * для запуска. Я нажимаю в ListView (на флажки И на имя контакта), и моя точка останова никогда не достигается. Итак: что я должен сделать, чтобы получить это уволить. Я ЕСМЬ настраиваю это так:
lv.SetOnListItemClicked(etc);
- Я думаю, что это так; Я не нахожусь на моей машине разработчика сейчас
Но даже если мне удастся запустить событие click, как я смогу определить соответствующие флажки? Они называются ckbx1, ckbx2 и ckbx3 (или около того) в файле макета, но их будет (Contacts.Count), так как я могу точно определить, какие из них были нажаты?
Мой другой вариант - динамически создавать виджеты в OnCreate () в Activity.
Мой псевдокод для этого следующий, и я открыт для предложений / отзывов о том, делает ли это или [не] лучший способ сделать это:
OnCreate() {
Cursor c = getContacts();
for (i = 0, i == c.Count, i++) {
int id = getContactID(i);
CheckBox ckbx1 = new CheckBox();
ckbx1.Tag = id;
ckbx1.OnClick = Checkbox1Click();
CheckBox ckbx2 = new CheckBox();
ckbx2.Tag = id;
ckbx2.OnClick = Checkbox2Click();
CheckBox ckbx3 = new CheckBox();
ckbx3.Tag = id;
ckbx3.OnClick = Checkbox3Click();
TextView tv = new TextView();
tv.Text = getContactName(i);
}
Checkbox1Click() {
int ContactID = (CheckBox)object.Tag;
switch (ContactID)
case 1:
WriteToDB(1, Option1);
case 2:
WriteToDB(2, Option1);
...
}
Это (особенно обработчик событий CheckboxClick), очевидно, очень грубо, но я думаю, что вы можете получить суть того, что я собираюсь сделать с этим - сохранение «проверенного» состояния Checkboxes в БД SQLite, чтобы я знал Contact1 хочет получить электронную почту (или ленту Twitter, или что-то, что указывают другие два флажка).
Так можно ли использовать мой предыдущий метод или я должен пойти по этому новому пути (или немного отклониться от этого?)