2013-03-03 43 views
2

我讀了SQLite數據庫的短信,然後我將在其中顯示給用戶一個simple_list_item_multiple_choice如何檢查ArrayList中的所有項目?

這是我目前如何檢查列表中的各個元素的數組列表(此代碼是內我的onclick)

final TextMessagesList backupSms = new TextMessagesList(txtList); 
        String selected = ""; 
        int cntChoice = smsListView.getCount(); 
        SparseBooleanArray sparseBooleanArray = smsListView.getCheckedItemPositions(); 
        for(int i = 0; i < cntChoice; i++){ 
         if(sparseBooleanArray.get(i)) { 
          selected += smsListView.getItemAtPosition(i).toString() + "\n"; 

         } 
        } 
Toast.makeText(Backup.this,selected,Toast.LENGTH_LONG).show(); 

我可以選擇個別複選框,然後烤麪包什麼已被選中。 我的問題是我如何檢查/所有項目時,我檢查列表中的第一個項目

任何人都可以請幫我找出我需要做的下一步?

預先感謝您的幫助,非常感謝。

回答

2

雖然Emanuel的答案應該使複選框被選中,但是沒有把握確保ListView也知道哪些項目被選中,哪些不被選中。爲了安全起見,我會用getCount()setItemChecked()代替:

for (int x = 0; x < smsListView.getCount(); x++) { 
    smsListView.setItemChecked (x, true); 
} 

要取消一切,遵循相同的模板,但false更換true

+1

嘿@ A-C我嘗試了你的方式,我得到它的工作,只是想說謝謝,你的幫助。 – Randrm 2013-03-04 20:29:16

+0

不客氣:-)很高興聽到這個作品! – 2013-03-04 20:39:26

0

您的問題與您的代碼一起留下了一些解釋空間。 從我的理解,這將是可能的問題的答案:

int count = smsListView.getChildCount(); 
for (int i = 0; i < count; i++) { 
    CheckedTextView v = (CheckedTextView) smsListView.getChildAt(i); 
    v.setChecked(true); 
} 

如果這不是你所需要的,那麼請詳細說明這個問題。

+0

爲什麼不使用['setItemChecked()'](http://developer.android.com/reference/android/widget/AbsListView.html#setItemChecked(int,%20boolean))? – 2013-03-03 01:56:54

+0

嗨伊曼紐爾,我相信你的我的代碼確實留下了一些解釋空間我嘗試了你的方式,但它似乎並沒有選擇項目被點擊時的所有內容。我想要做的是當我檢查第一個複選框時,我想要檢查所有的框。 – Randrm 2013-03-04 11:28:24

相關問題