我正在尝试使用 FieldManagers(水平和垂直)创建列表。在这个列表中,我有多个可点击的项目,比如按钮,所以我没有使用ListField
or ObjectListField
。
我已成功创建 UI,但无法附加来自服务器的特定项目 ID。此外,在单击任何列表行中的特定按钮时,我想获取项目 ID 并希望对该 ID 执行操作。
所以,请让我知道如何在使用 FieldManager 时将 ID 附加到特定行,然后如何在单击按钮时针对该 ID 生成事件?
我正在尝试使用 FieldManagers(水平和垂直)创建列表。在这个列表中,我有多个可点击的项目,比如按钮,所以我没有使用ListField
or ObjectListField
。
我已成功创建 UI,但无法附加来自服务器的特定项目 ID。此外,在单击任何列表行中的特定按钮时,我想获取项目 ID 并希望对该 ID 执行操作。
所以,请让我知道如何在使用 FieldManager 时将 ID 附加到特定行,然后如何在单击按钮时针对该 ID 生成事件?
当您创建一行时,您可能正在Manager
为每一行创建一个(子类)。
至少,您似乎ButtonField
在每一行上都创建了一个。
您可以做的是在创建时将cookie附加到每一行或每个按钮。cookie只是附加到对象的一条额外信息。然后,当单击该行或按钮时,您向该行/按钮询问 cookie,并使用它来识别行 ID。
每个 BlackBerry Field都可以附加一个 cookie。由于 cookie 是 type 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 技术适用于任何Field
, 或Manager
类。在此处查看另一个示例。