ラベルのフィールド変更リスナー
-
29-09-2019 - |
質問
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;
解決
通常、フォーカスを受け入れたり、イベントをクリックしたりしないLabelfieldsの束を使用する代わりに、 リストフィールド 画面上?それはあなたが探しているもののもののようです。
Labelfieldアプローチを使用したい場合は、いくつかのことをする必要があります。まず、Labelfieldを作成するときは、 Field.FOCUSABLE
フォーカスを受け入れるようにスタイル:
LabelField shops = new LabelField(shoppingList, Field.FOCUSABLE);
これで、Labelfieldフィールドは、1つを設定すると、Changeリスナーに呼び出されないため、親マネージャーのクリックイベントとキーイベントを聞く必要があります。これらのクリックまたはキーイベントは、マネージャーの任意のフィールドの場合があるため、イベントが発生したときにどのフィールドに焦点を合わせているかを確認し、フォーカスのフィールドに基づいて適切なハンドラーを実行する必要があります。
コード例:
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);
}
};
所属していません StackOverflow