2009-07-27 35 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); 
       } 
     } 
    } 
} 
相关问题