2010-07-09 24 views
12

Sto tentando di aggiungere le viste a un layout lineare a livello di codice.Android: aggiungi due viste di testo a livello di programmazione

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

In primo luogo, ho solo aggiunto le informazioniView e tutto ha funzionato bene. Butt dopo aver aggiunto anche la vista linea, si è bloccato con il seguente errore:

java.lang.IllegalStateException: il figlio specificato ha già un genitore. Devi chiamare removeView() sul genitore del bambino per primo.

Così ho provato addView (Visualizza v, int index), ma si è schiantato con lo stesso messaggio ...

Ha qualcuno una soluzione?

Grazie, Martin

risposta

2

Non è possibile aggiungere la stessa vista bambino più volte nella stessa vista padre. È necessario creare una nuova vista o gonfiare ogni volta una nuova vista.

12

Come gpmoo7 detto è necessario creare ogni volta una nuova vista nel ciclo

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

} 
Problemi correlati