/ / Pętla z setLayoutParams - ClassCastException - java, android, android-layout

Pętla z setLayoutParams - ClassCastException - java, android, układ androida

-AKTUALIZACJA-

Zrobiłem zgodnie z sugestią Agarwal, a teraz mam ten błąd:

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

Korzystam z tego kodu, aby dynamicznie ustawiać szerokość 15 przycisków. I zgadłeś, że to nie działa. Błąd występuje w for pętli, ale nie jestem pewien, dlaczego.

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

Dziękuję za wszelką pomoc. (A jeśli ktoś może wymyślić lepszy sposób na wypełnienie buttons[] byłoby to bardzo mile widziane).

Odpowiedzi:

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

powyższą pętlę powtórzono 16 razy i zaszczepiłeś tylko 15 przycisków, albo dodaj przycisk, albo zmień x <15. jeśli zmienisz x <15, to zmień również poniższe

Przycisk [] przyciski = nowy przycisk [15];


1 dla odpowiedzi nr 2

Naprawiłem to za pomocą tego:

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

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

Pierwsze LayoutParams od LinearLayout.