Autore Topic: popolare view dinamicamente  (Letto 258 volte)

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
popolare view dinamicamente
« il: 19 Giugno 2014, 21:48:30 CEST »
0
Salve!
nella mia applicazione, devo mostrare una lista di date, con accanto un immagine che indica se l'utente era presente o meno.
Inizialmente ho creato una listview, scrivendo "presente" o "assente" ma la visibilità non era il massimo, per crear i singoli elementi con l'immagine che cambia, suppongo che devo crearmi un adapter personalizzato e quindi effettuare un controllo su ogni elemento per generare la giusta immagine.
Ma poco fa mi è venuta un idea: non posso incapsulare N relative layout dentro un linear layout?
mi spiego meglio, da codice effettuo un ciclo, per ogni elemento, aggiungo alla vista un relative layout contenente la data e l'immagine
l'incapsulamento sarebbe del tipo:
Relative
--Scrollview
----LinearLayout
------RelativeLayout (aggiunto dinamicamente)
--------textview
--------imageview
------\Relativelayout
------RelativeLayout (aggiunto dinamicamente)
--------textview
--------imageview
------\Relativelayout
------RelativeLayout (aggiunto dinamicamente)
--------textview
--------imageview
------\Relativelayout
------RelativeLayout (aggiunto dinamicamente)
--------textview
--------imageview
------\Relativelayout
----\linearlayout
--scrollview
relativelayout

il punto è, come si fa?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:popolare view dinamicamente
« Risposta #1 il: 19 Giugno 2014, 21:54:18 CEST »
0
Se il numero è basso (esempio 5), aggiungine direttamente 5 in modo statico, quindi nascondi (visibility GONE) quelle che di volta in volta non usi.

Se il numero è grande, meglio la ListView con custom adapter: molto più efficiente, semplice e performante.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:popolare view dinamicamente
« Risposta #2 il: 19 Giugno 2014, 21:58:15 CEST »
0
uhm non ho mai avuta molto simpatia per gli adapter (e c'ho dovuto lavorare anche creandone di complessi)
è così difficile annidare le viste?

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:popolare view dinamicamente
« Risposta #3 il: 24 Giugno 2014, 14:14:31 CEST »
0
Scusate il ritardo, il mio device non veniva più riconosciuto, ho aggiornato eclipse per risolvere, e ho peggiorato la situazione.. ora sono tornato operativo.
Comunque sono riuscito a creare il codice per popolare la vista.
Ora mi resta solo di inserire i dati in modo dinamico (praticamente devo inserire una data, con accanto un img se l'utente era presente in quella data, o viceversa un altra immagine  (per questo non ho problemi)

Invece vorrei riuscire a far in modo che l'imageview abbia le stesse dimensioni della scritta, non ho ancor provato, ma dovrebbe esser possibile no?

Nel frattempo, ecco il codice, magari può servire a qualcuno...


Codice (Java): [Seleziona]
LinearLayout layout = (LinearLayout) findViewById(R.id.LayoutLineare);
       
       for(int i=0; i<5; i++){   //al posto del 5, poi avrò il numero di elementi dell'array
           
           LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
          LinearLayout LayoutPadre = new LinearLayout(this);
          LayoutPadre.setOrientation(0); //di default è verticale (0)
        TextView Tag = new TextView(this);
       
        Tag.setLayoutParams(params);
       
        Tag.setText("Data");  //Qui verrà modificato in modo dinamico
        ImageView img = new ImageView(this);
        img.setPadding(20, 0, 0, 0);  // mi sposto un pò dalla scritta
               
        img.setImageResource(R.drawable.ic_assente);   //Qui sceglierò quale dele due immagini inserire


       //Aggiungo immagine e scritta al layout lineare, e quindi lo aggiungo a quello generale


        LayoutPadre.addView(Tag);
       LayoutPadre.addView(img);
       
       LayoutPadre.setLayoutParams(params);
       layout.addView(LayoutPadre);
       }


p.s. nel file xml relativo alla view, ho incapsulato tutto in uno scrollview
« Ultima modifica: 24 Giugno 2014, 15:36:48 CEST da gabric »