我正在从json url中检索对象列表,并通过添加标签字段和分隔符将其显示为列表。现在,我想让每个标签都可以点击,这样每个标签都会重定向到一个单独的网址。单击标签时,必须使用相应URL的json数据打开单独的屏幕。所以,谁能告诉我如何实现这一目标。如果我得到一些如何操作的示例代码,我将非常感激...以下是我所做的一些示例代码...
public VerticalFieldManager showShoppingList(){
try {
jsArrShpList=new JSONArray(strShopping);
totalList= jsArrShpList.length();
for(int i=0;i<totalList;i++){
String strAlert=jsArrShpList.get(i).toString();
JSONObject joAlert=new JSONObject(strAlert);
String shoppingList = joAlert.get("CategoryName").toString();
LabelField shops = new LabelField(shoppingList);
VerticalFieldManager vfmListRow=new VerticalFieldManager();
vfmListRow.add(shops);
vfmListRow.add(new SeparatorField());
vfmShpList.add(vfmListRow);
}
return vfmShpList;
答案 0 :(得分:1)
为什么不在屏幕上使用ListField,而不是使用一堆通常不接受焦点或点击事件的LabelField?这似乎更像是你正在寻找的东西。
如果你想使用LabelField方法,你需要做一些事情。首先,在创建LabelField时,使用Field.FOCUSABLE
样式以使其接受焦点:
LabelField shops = new LabelField(shoppingList, Field.FOCUSABLE);
现在,由于LabelField字段在设置更改时不会调用更改侦听器,因此您需要在其父管理器中侦听单击和键事件。由于这些单击或键事件可以用于管理器中的任何字段,因此您需要在事件发生时检查哪个字段处于焦点,并根据焦点字段运行任何适当的处理程序。
代码示例:
VerticalFieldManager vfmListRow = new VerticalFieldManager() {
protected boolean navigationClick(int status, int time) {
Field field = getFieldWithFocus();
if (field != null && field.equals(shops)) {
System.out.println("shops field clicked");
return true;
}
return super.navigationClick(status, time);
}
protected boolean keyChar(char key, int status, int time) {
Field field = getFieldWithFocus();
if (key == Characters.ENTER && field != null && field.equals(shops)) {
System.out.println("shops field clicked");
return true;
}
return super.keyChar(key, status, time);
}
};