user-interface - 黑莓 - 从带有复选框的列表中获取选中的项目

标签 user-interface blackberry java-me listfield

如何从列表中获取所有选中的项目?

我需要从列表中获取所有选定(选中)的项目并填充向量。

我没有获取所有选定的项目,我只获取当前焦点所在的项目。

我正在根据知识库文章实现带有复选框的列表字段。

如果我使用 getSelection(),它会返回当前突出显示的列表行索引,而不是所有已检查的行索引。

最佳答案

据我了解,样本是 How To - Create a ListField with check boxes

然后可以将Vector添加到实现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 一起使用,您可以迭代屏幕上的所有字段(或任何管理器)并检查其复选框字段,然后取一个值:

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;
    }
}

关于user-interface - 黑莓 - 从带有复选框的列表中获取选中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1186383/

相关文章:

java - 黑莓 - "you currently have no new notifications"

java - 我可以使用 GZIP 压缩 HTTP 请求吗?

string - java-me:将字符串转换为 bool 值

java - LWUIT(J2ME) 列表在滚动后将元素对齐到网格

java - JTextArea 垂直滚动条在不需要时显示

java - 显示两个 Java 类

wpf - 提高 WPF UI 渲染速度的方法

http post 请求不在 Blackberry 5.0 中发送参数

python - PyQt 从用户获取日期

audio - 在Blackberry的单个应用程序中禁用声音