我已經能夠創建一個ListActivity,它顯示一個頁眉和一個頁腳,並夾在這些自定義佈局之間,每行包含三個複選框和一個聯繫人姓名(從聯繫人數據庫中讀取)。我使用SimpleCursorAdapter來顯示這些信息。我的問題是獲取OnListItemClicked()*來觸發。我點擊ListView(在聯繫人的名稱上的複選框AND),我的斷點永遠不會到達。所以:我必須做些什麼才能解決這個問題。我設置它,就像這樣:單擊列表項時如何識別關聯的小部件?
lv.SetOnListItemClicked(etc);
- 我認爲這是;我現在不在我的開發機器上
但即使我能夠觸發點擊事件,我將如何識別關聯的複選框?它們在佈局文件中被命名爲ckbx1,ckbx2和ckbx3(或左右),但是它們會有(Contacts.Count),那麼我怎樣才能確定哪些被點擊?
我的另一種選擇是在Activity的OnCreate()中動態創建小部件。
我這個僞代碼是下面,我願意接受建議這是否使或/反饋[不]去它的最好辦法:
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事件處理程序)顯然非常粗糙,但我認爲你可以通過這種方式獲得我要去的位置 - 將複選框的「checked」狀態保存到SQLite數據庫,這樣我就知道Contact1需要電子郵件(或Twitter提要,或者其他兩個複選框指示的內容)。
所以是我以前的方法挽救的,或者我應該走這條新的路徑(或偏離了從一點點?)