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 に答える