如何在BlackBerry中附加并获取特定的列表项ID?

时间:2013-05-09 09:06:06

标签: blackberry blackberry-simulator blackberry-eclipse-plugin blackberry-jde

我正在尝试使用FieldManagers(水平和垂直)创建列表。在此列表中,我有多个可点击的项目,例如按钮,因此我没有使用ListFieldObjectListField

我已成功创建了UI,但我无法附加来自服务器的特定项ID。此外,在单击任何列表行中的特定按钮时,我想获取项目ID并希望针对该ID执行操作。

那么,请让我知道在使用FieldManager时如何将id附加到特定行的想法,以及如何在单击按钮时针对该ID生成事件?

1 个答案:

答案 0 :(得分:2)

当你创建一行时,你可能正在为每一行创建一个(子类)Manager

至少,您似乎在每行创建ButtonField

您可以做的是在创建时将 Cookie 附加到每一行或每个按钮。 cookie 只是附加到对象的额外信息。然后,当单击该行或按钮时,您会询问cookie的行/按钮,并使用它来标识行ID。

每个BlackBerry Field都可以附加一个cookie。由于Cookie的类型为Object,因此您可以随心所欲地制作它。

例如,在为行创建按钮时:

for (int i = 0; i < numRows; i++) {
    BitmapButtonField button = new BitmapButtonField(onImage, offImage, ButtonField.CONSUME_CLICK);
    // use the row index as the cookie
    button.setCookie(new Integer(i));
    button.setChangeListener(this);
    Manager row = new MyRowManager();
    row.add(button);
    add(row);
}

然后点击按钮时:

void fieldChanged(Field field, int context) {
    Object cookie = field.getCookie();
    if (cookie instanceof Integer) {
        Integer rowId = (Integer)cookie;
        System.out.println("Row Id = " + rowId);
    }
}

注意:我正在使用BlackBerry Advanced UI BitmapButtonField,但Cookie技术适用于任何FieldManager类。 See another example here