0

我正在从 json url 检索对象列表,并通过添加标签字段和分隔符将其显示为列表。现在,我想让每个标签都可点击,以便每个标签重定向到单独的 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;
4

1 回答 1

1

与其使用一堆通常不接受焦点或单击事件的 LabelField,不如在屏幕上使用ListField ?这似乎是您正在寻找的更多内容。

如果您确实想使用 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);
    }
};
于 2010-06-25T17:22:31.730 回答