-2

Je pensais comment les boutons rendre dynamiquement N dans la disposition relative qui ont été tirées par les cheveux par requête HTTP comme réponse JSON (JSONObject), par souci de simplicité, disons que tout ce que nous avons à JSON estComment créer une liste de boutons dans scrollview basé sur la réponse HTTP JSON?

  1. Un nom de le bouton (l'étiquette)
  2. Un texte qui montrera dans le dialogue d'alerte après le bouton cliquez sur

Soit le pari que le JSON nous avons obtenu de réponse http ressemble à ceci:

[ 
    { 
     "label":"Button 1", 
     "alert":"Button 1 has been clicked" 
    }, 
    { 
     "label":"Button 2", 
     "alert":"Button 2 has been clicked" 
    }, 
    { 
     "label":"Button 3", 
     "alert":"Button 3 has been clicked" 
    } 
] 

Il devrait rendre quelque chose comme ceci:

| Button 1 | // onclick the alert dialog shows "Button 1 has been clicked" 
------------- 
| Button 2 | // onclick the alert dialog shows "Button 2 has been clicked" 
------------ 
| Button 3 | // onclick the alert dialog shows "Button 3 has been clicked" 

Tout ce que je besoin est de savoir comment créer des éléments d'interface utilisateur dynamiques (non prédéfinies dans le fichier XML de mise en page) qui peut être après assimilé à un code supplémentaire, comme onClick

+0

Pouvons-nous voir ce que vous avez essayé de résoudre, Bartłomiej? – halfer

+0

J'ai utilisé ListView, mais j'apprends maintenant comment faire est personnalisé –

+0

OK, ajouteriez-vous ce que vous avez essayé à la question? Il est bon de prendre cette habitude pour montrer que vous avez fait des recherches solides sur le problème. Vous avez également reçu deux réponses: comment vous êtes-vous débrouillées? Êtes-vous capable de répondre (commenter, voter, accepter) sur l'un d'entre eux? – halfer

Répondre

2

prenez d'abord une taille de votre boucle et analysable JSONArray travers

LinearLayout layout = (LinearLayout) findViewById(R.id.linear_layout_tags); 
    layout.setOrientation(LinearLayout.VERTICAL); 

     LinearLayout row = new LinearLayout(this); 
     row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 

     for (int j = 0; j < jsonArray.length; j++ { 
      Button btnTag = new Button(this); 
      btnTag.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
      JSONObject jsonObject = jsonArray.getJSONObject(j); 
      String label= jsonObject.getString("label"); 
      btnTag.setText(""+ label); 
      btnTag.setId(j +1); 
      row.addView(btnTag); 
     } 

     layout.addView(row); 
0

Je ne vais pas vous donner le code, mais ce que vous devez faire:

  1. Au lieu de créer une liste de boutons. Créez un RecyclerView avec un bouton (ou n'importe quelle disposition que vous voulez dans une rangée) en tant qu'élément RecyclerView.

  2. Créez un adaptateur de vue Recycler qui accepte la liste des POJO de l'objet json et gonfle la disposition des éléments RecyclerView.

  3. Pour obtenir le POJO, vous pouvez utiliser GSON. Recherche le sur Google. Maintenant, dans l'adaptateur, utilisez l'étiquette pour définir le titre du bouton et utilisez "alerte" pour définir le champ de message toast que vous allez afficher.