2009-07-27 60 views
2

如何從列表中檢索所有已檢查的項目?Blackberry - 用複選框從列表中檢查項目

我需要從列表中獲取所有選中(選中)的項目並填充一個向量。

我沒有得到所有選定的項目,我只得到當前焦點所在的項目。

我按照知識庫文章使用複選框實現listfield。

如果我使用getSelection(),它會返回當前突出顯示的列表行索引,而不是所有已經檢查過的行。

回答

3

正如我undestood,樣品爲How To - Create a ListField with check boxes

然後你就可以添加矢量到ListFieldCallback實現類:

private Vector _checkedData = new Vector(); 
public Vector getCheckedItems() { 
     return _checkedData; 
    } 

和更新drawListRow這樣:

if (currentRow.isChecked()) 
{ 
    if(-1 ==_checkedData.indexOf(currentRow)) 
     _checkedData.addElement(currentRow); 
    rowString.append(Characters.BALLOT_BOX_WITH_CHECK); 
} 
else 
{ 
    if(-1 !=_checkedData.indexOf(currentRow)) 
     _checkedData.removeElement(currentRow); 
    rowString.append(Characters.BALLOT_BOX); 
} 

如果您將VerticalFieldManager與自定義CheckBoxField一起使用,則可以迭代E的屏幕(或任何經理)的所有領域,並檢查其複選框字段,然後取一個值:

class List extends VerticalFieldManager { 
... 
    public Vector getCheckedItems() { 
     Vector result = new Vector(); 
     for (int i = 0, cnt = getFieldCount(); i < cnt; i++) { 
      Field field = getField(i); 
      if (field instanceof CheckboxField) { 
       CheckboxField checkboxField = (CheckboxField) field; 
       if (checkboxField.isChecked()) 
        result.addElement(checkboxField); 
      } 
     } 
     return result; 
    } 
} 
+0

如何選擇在一個時間的所有項目一個listfield當點擊按鈕selectall.plz給你的建議,如果任何人有關於htat的想法。 – user1213202 2012-03-06 06:03:47

0

@桑德亞米

class List extends VerticalFieldManager { 
... 
    public void selectAll() { 
     for (int i = 0, cnt = getFieldCount(); i < cnt; i++) { 
       Field field = getField(i); 
       if (field instanceof CheckboxField) { 
         CheckboxField checkboxField = (CheckboxField) field; 
         checkboxField.setChecked(true); 
       } 
     } 
    } 
}