Autore Topic: Creare un layout a runtime  (Letto 1066 volte)

Offline mariliana

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Nexus S
  • Sistema operativo:
    windows vista
Creare un layout a runtime
« il: 09 Ottobre 2012, 22:54:31 CEST »
0
Ciao,
ho dei problemi con un table layout e spero che qlcn di voi mi possa aiutare.
Nell'applicazione che sto cercando di creare, voglio che i dati vengano visualizzati solo se presenti, ma in un modo particolare.
Praticamente al mio layout si aggiungono gli "oggett" per vedere i dati solo se quest'ultimi sono presenti.
quindi creo un linear layout, nel quale inserisco una textview e un tableLayout.
a quest'ultimo vado ad aggiungere tante righe quante i dati che devo visualizzare ed alle righe aggiungo una text view.
Funzionerebbe tutto perfettamente se pero le righe si incolonnassero, invece di stare una di fianco all'altra.

Mi date una mano a capire dove sbaglio?
Codice (Java): [Seleziona]
LinearLayout myLinearLayout = new LinearLayout(this);
                myLinearLayout.setOrientation(LinearLayout.VERTICAL);
                myLinearLayout.addView(TagDiscovery);                                                                                            
                   
                    if (testTag.getTechList().length >0){
                       
                       
                        TableLayout TagDatesTable = new TableLayout(this);  
                        TagDatesTable.setOrientation(LinearLayout.VERTICAL);
                        TagDatesTable.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
                     
                        /* Create a new row to be added. */
                        TableRow TestRowTable1 = new TableRow(this);                                              
                        TestRowTable1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                        TestRowTable1.setBackgroundColor(color.holo_green_dark);                                              
                        TextView TagTechList1 = new TextView(this);
                        TagTechList1.setText(typeNfc1[0]);    
                        TagTechList1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));                    
                        TestRowTable1.addView(TagTechList1);
                        TagDatesTable.addView(TestRowTable1);

                        /* Create a new row to be added. */
                        TableRow TestRowTable2 = new TableRow(this);                    
                        TestRowTable2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                        TestRowTable2.setBackgroundColor(color.holo_blue_dark);                  
                        TextView TagTechList2 = new TextView(this);
                        TagTechList2.setText(typeNfc1[1]);    
                        TagTechList2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
                        TestRowTable1.addView(TagTechList2);                  
                        TagDatesTable.addView(TestRowTable2);      
                       
                        myLinearLayout.addView(TagDatesTable);
                                                                                                                                                                         
                setContentView(myLinearLayout);

Offline mdb

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: +7
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    Prometheo Apps
  • Sistema operativo:
    Windows
Re:Creare un layout a runtime
« Risposta #1 il: 14 Ottobre 2012, 00:41:22 CEST »
0
ho dei problemi con un table layout e spero che qlcn di voi mi possa aiutare.
Capita spesso di cercare un errore "complicato" quando invece... è solo una semplice svista!
:-)

Qui:
Codice: [Seleziona]
TestRowTable1.addView(TagTechList2);                   
TagDatesTable.addView(TestRowTable2);
al primo rigo, deve essere "TestRowTable2" (invece hai messo un "1")
per cui la seconda TextView veniva inserita nella prima riga, invece di andare nella seconda!
:-)

ps: ma come mai usi la TableView? Non potresti inserire le TextView direttamente nel LinearLayout?
App per Android:
Almanacco: Giorno per giorno, eventi, notizie, giochi e curiosità, da leggere e condividere
Proverbi Napoletani: Più di 50 proverbi da ascoltare in dialetto napoletano. Due sottofondi musicali.

Offline mariliana

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Nexus S
  • Sistema operativo:
    windows vista
Re:Creare un layout a runtime
« Risposta #2 il: 14 Ottobre 2012, 15:52:50 CEST »
0
Grazie,
si vede che nei diversi copia/incolla l'ho lasciato lì.
adesso provo a vedere se funziona dopo la correzione.

Citazione
ps: ma come mai usi la TableView? Non potresti inserire le TextView direttamente nel LinearLayout?

Il layout che vado a creare non ha niente al suo interno, perchè a seconda dei dati che vado ad estrarre dal tag, creo una struttura diversa.
Dici che per fare questa cosa posso fare a meno del table View?

Grazie

Offline mdb

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: +7
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    Prometheo Apps
  • Sistema operativo:
    Windows
Re:Creare un layout a runtime
« Risposta #3 il: 14 Ottobre 2012, 17:57:54 CEST »
0
Il layout che vado a creare non ha niente al suo interno, perchè a seconda dei dati che vado ad estrarre dal tag, creo una struttura diversa.
Dici che per fare questa cosa posso fare a meno del table View?

Ora non so bene cosa vuoi fare nel suo complesso,
ma per quello che si vede ora nel codice,
potresti anche inserire le TextView (TagTechList1  e TagTechList2) direttamente nel LinearLayout (myLinearLayout)

Se devi aggiungere non solo due righe, ma diverse altre, potresti anche considerare di usare una ListView
che le gestisce in maniera più efficiente, gestendo in maniera ottimale lo scroll dei dati
App per Android:
Almanacco: Giorno per giorno, eventi, notizie, giochi e curiosità, da leggere e condividere
Proverbi Napoletani: Più di 50 proverbi da ascoltare in dialetto napoletano. Due sottofondi musicali.