/ / Looping avec setLayoutParams - ClassCastException - java, android, android-layout

Boucler avec setLayoutParams - ClassCastException - java, android, android-layout

-METTRE À JOUR-

J'ai fait comme suggéré Agarwal, et maintenant j'ai cette erreur:

04-21 11:42:01.807: E/AndroidRuntime(1456): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams

J'utilise ce code pour définir de manière dynamique la largeur de 15 boutons. Et, vous l’avez deviné, cela ne fonctionne pas. L’erreur se produit dans le for boucle, mais je ne sais pas pourquoi.

    Button[] buttons = new Button[16];
buttons[0] = (Button)findViewById(R.id.root2);
buttons[1] = (Button)findViewById(R.id.root3);
/* blah blah blah */
buttons[13] = (Button)findViewById(R.id.root15);
buttons[14] = (Button)findViewById(R.id.root16);

LayoutParams lp = new LayoutParams(widthOfButtons,LayoutParams.WRAP_CONTENT);

for(int x = 0; x < 16; x ++){
buttons[x].setLayoutParams(lp);
}

Merci pour toute aide. (Et si quelqu'un peut penser à un meilleur moyen de remplir le buttons[] variable, ce serait très apprécié.)

Réponses:

3 pour la réponse № 1
for(int x = 0; x < 16; x ++){
buttons[x].setLayoutParams(lp);
}

la boucle ci-dessus a été répétée 16 fois et vous n'aviez installé que 15 boutons, soit en ajoutant un bouton, soit en modifiant x <15. si vous changez x <15 alors changez aussi le dessous

Bouton [] boutons = nouveau bouton [15];


1 pour la réponse № 2

Je l'ai corrigé en utilisant ceci:

LayoutParams lp = new LinearLayout.LayoutParams(widthOfButtons,LayoutParams.WRAP_CONTENT);

for(int x = 0; x < 15; x ++){
buttons[x].setLayoutParams(lp);
}

Obtenir LayoutParams de LinearLayout.