2010-06-25 3 views
0

Je récupère une liste d'objets à partir de json url et l'affiche comme une liste en ajoutant un champ d'étiquette et un séparateur. Maintenant, je veux que chaque étiquette soit cliquable afin que chaque étiquette redirige vers une URL séparée. En cliquant sur l'étiquette, un écran séparé doit s'ouvrir avec les données json de l'URL correspondante. Alors, quelqu'un peut-il me dire comment y parvenir. Je wil vraiment reconnaissant si je reçois un exemple de code de la façon de le faire ... Voici quelques exemples de code que je l'ai fait ...Auditeurs de modification de champs sur une étiquette

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; 

Répondre

1

Au lieu d'utiliser un tas de LabelFields qui ne normalement pas accepté concentrer ou cliquer sur les événements, pourquoi ne pas utiliser un ListField sur l'écran? Cela semble être plus de ce que vous cherchez. Si vous voulez suivre l'approche LabelField, vous devrez faire quelques choses. Tout d'abord, lorsque vous créez votre LabelField, utilisez le style Field.FOCUSABLE afin qu'il acceptera point:

LabelField shops = new LabelField(shoppingList, Field.FOCUSABLE); 

Maintenant, puisque le champ LabelField ne remettra pas en un écouteur de changement si vous définissez un, vous aurez besoin pour écouter les événements click et key dans son gestionnaire parent. Étant donné que ces événements click ou key peuvent concerner n'importe quel champ du gestionnaire, vous devez vérifier quel champ est actif lorsque l'événement se produit et exécuter un gestionnaire approprié en fonction du champ sélectionné.

Exemple de code:

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); 
    } 
}; 
+0

Can u plz fournir un exemple qui utilise ListField pour afficher les données JSON url ... –

+0

Il y a beaucoup d'exemples d'applications livrées avec les outils de développement BlackBerry, dont beaucoup l'utilisation le contrôle ListField. Comme pour JSON, votre meilleur pari est d'utiliser une bibliothèque tierce telle que org.json.me –