/ / Effettua il ciclo con setLayoutParams - ClassCastException - java, android, android-layout

Ripetizione con setLayoutParams - ClassCastException - java, android, android-layout

-AGGIORNARE-

Ho fatto come suggerito Agarwal e ora ho questo errore:

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

Sto usando questo codice per impostare dinamicamente la larghezza di 15 pulsanti. E, avete indovinato, non funziona. L'errore si verifica nel for loop, ma non sono sicuro del perché.

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

Grazie per qualsiasi aiuto. (E se qualcuno può pensare a un modo migliore per riempire il buttons[] variabile, sarebbe molto apprezzato).

risposte:

3 per risposta № 1
for(int x = 0; x < 16; x ++){
buttons[x].setLayoutParams(lp);
}

il ciclo precedente si ripete per 16 volte e hai instillato solo 15 pulsanti o aggiungi un pulsante o cambia x <15. se cambi x <15, cambia anche il sotto

Button [] buttons = new Button [15];


1 per risposta № 2

L'ho risolto usando questo:

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

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

ottenere LayoutParams a partire dal LinearLayout.