2013-03-03 44 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

相关问题