2017-05-22 1 views
0

Je veux afficher plusieurs boutons dynamiquement, 2 boutons sur chaque ligne. J'ai essayé tablerow et mis un linearLayout dedans mais les uttons ne sont pas apparus. ce que je l'ai fait me donne beaucoup bouton sous un bouton ... that's what i want to achieve lecture void() {comment ajouter dynamiquement 2 boutons dans chaque rangée dans android?

File file = getCacheDir(); 
    File file1 = new File(file,"favoris.txt"); 
    BufferedReader reader; 
    FileInputStream fileInputStream = null; 
    try { 

     fileInputStream = new FileInputStream(file1); 
     StringBuffer stringBuffer = new StringBuffer(); 
     reader = new BufferedReader(new InputStreamReader(fileInputStream)); 
     String line=reader.readLine(); 
     while (line != null) { 
      LinearLayout mainLinear=(LinearLayout) findViewById(R.id.mainLinear); 
      LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
      ImageButton ib=new ImageButton(this); 
      Button b=new Button(this); 
      b.setLayoutParams(params); 
      ib.setLayoutParams(params); 
      final int id=Integer.parseInt(line); 
      b.setId(id); 
      //ib.setId(id); 
      line = reader.readLine(); 
      b.setText(line); 
      line = reader.readLine(); 
      b.setText(b.getText()+"\n"+line); 
      line = reader.readLine(); 

      Picasso.with(this).load("https://omaimaelair.000webhostapp.com/images/img"+id+".jpg").into(ib); 

      mainLinear.addView(b); 
      mainLinear.addView(ib); 

      b.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Toast.makeText(FavorisActivity.this,id+"", Toast.LENGTH_SHORT).show(); 
       } 
      }); 
     } 

    ... 
+0

Est-ce que ma réponse a aidé? – Barns

Répondre

0

Vous utilisez un LinearLayout de votre R.id.mainLinear. Si l'orientation de cette disposition est vertical chaque bouton apparaîtra sous le prochain ajouté. Vous ajoutez également un nouveau R.id.mainLinear à chaque itération. La disposition principale devrait probablement être appelée avant que la boucle while ne soit appelée.

Utilisez un LinearLayout (horizontal) dans le LinearLayout principal (vertical). Ajouter les boutons à l'horizontale LinearLayout. Cela devrait corriger le problème.

Bien que cela puisse résoudre le problème, vous devez envisager d'utiliser un ListView et définir une vue personnalisée pour vos boutons. Utilisez un adaptateur de données pour remplir les boutons avec les informations dont vous avez besoin. Vous avez beaucoup plus de contrôle sur l'apparence et la fonction. Votre code sera également beaucoup plus facile à changer dans le futur.

Enfin, je vous suggère de ne pas lire les données du fichier comme vous le faites maintenant. Vous avez trois appels .readLine avant de vérifier la validité dans votre instruction while. Cela pourrait conduire à une erreur.