当您创建一行时,您可能正在为每行创建一个(的子类)Manager
。
至少,你似乎在每行创建一个ButtonField
。
您可以做的是在创建时为每行或每个按钮添加一个Cookie。 A 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);
}
}
注:我使用的是黑莓高级UI BitmapButtonField为此,但Cookie技术将与任何Field
或Manager
类一起使用。 See another example here。
我们应该看看你试过了吗? – Signare 2013-05-09 09:10:21