2010-07-09 14 views
12

Próbuję programowo dodać widoki do układu liniowego.Android: Dodaj programowo dwa widoki tekstowe

LinearLayout layout  = (LinearLayout) findViewById(R.id.info); 
    String [] informations = topOffer.getInformations(); 
    TextView informationView; 
    View line = new View(this); 
    line.setLayoutParams(new LayoutParams(1, LayoutParams.FILL_PARENT)); 
    line.setBackgroundColor(R.color.solid_history_grey); 
    for (int i = 0; i < informations.length; i++) { 
     informationView = new TextView(this); 
     informationView.setText(informations[i]); 
     layout.addView(informationView, 0); 
     layout.addView(line, 1); 
    } 

Najpierw dodałem tylko informacje, a wszystko działało dobrze. Butt po dodaniu również widoku liniowego, zawiesił się z następującym błędem:

java.lang.IllegalStateException: Określone dziecko ma już element nadrzędny. Najpierw musisz wywołać metodę removeView() na rodzicu dziecka.

Więc próbowałem addView (Zobacz v, int index), ale rozbił się z tym samym komunikatem ...

Has ktoś rozwiązanie?

Dzięki Martin

Odpowiedz

2

Nie można dodać ten sam widok dziecka kilka razy w tym samym widoku macierzystego. Musisz utworzyć nowy widok lub nadmuchać nowy widok za każdym razem.

12

Jak gpmoo7 że trzeba stworzyć za każdym razem nowy widok w pętli

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.linear); 

    LinearLayout layout = (LinearLayout) findViewById(R.id.linear); 

    String[] informations = new String[] { "one", "two", "three" }; 
    TextView informationView; 

    for (int i = 0; i < informations.length; i++) { 
     View line = new View(this); 
     line.setLayoutParams(new LayoutParams(1, LayoutParams.MATCH_PARENT)); 
     line.setBackgroundColor(0xAA345556); 
     informationView = new TextView(this); 
     informationView.setText(informations[i]); 
     layout.addView(informationView, 0); 
     layout.addView(line, 1); 
    } 

} 
Powiązane problemy