Autore Topic: SetAdapter non aspetta l'istruzione SimpleAdapter  (Letto 630 volte)

Offline Matti111

  • Utente junior
  • **
  • Post: 68
  • Respect: +11
    • Mostra profilo
    • Ad Banners
  • Dispositivo Android:
    Nokia Lumia 800
  • Play Store ID:
    Ronca
  • Sistema operativo:
    Windows 7
SetAdapter non aspetta l'istruzione SimpleAdapter
« il: 30 Maggio 2012, 11:37:58 CEST »
0
Ciao a tutti,
grazie al codice postato da un utente in questo forum ho modificato il SimpleAdapter in modo che cambiasse il colore ad alcuni item della mia listView in questo modo:

Codice: [Seleziona]
SimpleAdapter sp=new SimpleAdapter(this, lista,R.layout.categ_item , nome, reso){
                         
                         @Override
                         public View getView(int position, View convertView, ViewGroup parent) {
                                 if (convertView==null){
                                         LayoutInflater inflater=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                                         convertView=inflater.inflate(R.layout.categ_item, null);
                                 }
                                 Object r=getItem(position);
                                 HashMap <String, Object> r1=new HashMap<String,Object>();
                                 r1.put("colore", getItem(2));
                                 View row = super.getView(position, convertView, parent);
                                 String[]Splitta=r.toString().split(",");
                                 String Splitta2=Splitta[2];
                                 String[] Splitta3=Splitta2.split("=");
                                 String col=Splitta3[1];
                                 col=col.replace("-", "");
                                 col=col.replace("}", "");
                                 
                                 if (col.length()< 8){
                                         col="#" + MettiCanc(col, 8);
                                 }else{
                                         col="#" + col;
                                 }
                                 Log.d("Colore Elab:", col);
                                 row.setBackgroundColor(Color.parseColor(col));
                                 return row;
                                 
                         }
                     };
                     mView.setAdapter(sp);

La cosa strana è che la riga di codice

Codice: [Seleziona]
mView.setAdapter(sp);
viene eseguita prima che il SimpleAdapter abbia finito. Quindi la listView che mi viene generata è sbagliata. Non capisco come possa succedere.

Avete consigli?

Grazie
Mattia
Tutto quello che c'è da sapere sul mobile advertising
AdBanner

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:SetAdapter non aspetta l'istruzione SimpleAdapter
« Risposta #1 il: 30 Maggio 2012, 11:51:07 CEST »
0
Cosa intendi per "sbagliata" ?

Non sono andato a leggere con attenzione il tuo SimpleAdapter, ma non ha niente da "finire" al momento della creazione, ridefinisce la getView che viene usata quando la ListView ridisegna un item.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Matti111

  • Utente junior
  • **
  • Post: 68
  • Respect: +11
    • Mostra profilo
    • Ad Banners
  • Dispositivo Android:
    Nokia Lumia 800
  • Play Store ID:
    Ronca
  • Sistema operativo:
    Windows 7
Re:SetAdapter non aspetta l'istruzione SimpleAdapter
« Risposta #2 il: 30 Maggio 2012, 11:53:48 CEST »
0
Cosa intendi per "sbagliata" ?

Non sono andato a leggere con attenzione il tuo SimpleAdapter, ma non ha niente da "finire" al momento della creazione, ridefinisce la getView che viene usata quando la ListView ridisegna un item.

Nel senso che mi aspetto che il simpleAdapter cambia il colore ai vari item e poi (solo quando ha finito), dovrebbe essere eseguita l'istruzione

Codice: [Seleziona]
mView.setAdapter(sp);
In realtà invece non avviene in questo modo. E non capisco perchè.
Tutto quello che c'è da sapere sul mobile advertising
AdBanner

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:SetAdapter non aspetta l'istruzione SimpleAdapter
« Risposta #3 il: 30 Maggio 2012, 12:56:50 CEST »
+1
Nel senso che mi aspetto che il simpleAdapter cambia il colore ai vari item e poi (solo quando ha finito), dovrebbe essere eseguita l'istruzione
Codice: [Seleziona]
mView.setAdapter(sp);In realtà invece non avviene in questo modo. E non capisco perchè.

Ma perchè non è così che funziona. L'adapter collega la View (in questo caso la ListView) alla base dati sottostante: lo crei, lo personalizzi (nella getView), poi lo colleghi alla lista (con il setAdapter). Quando la ListView decide di visualizzare un item, richiede all'adapter di dargli la View dell'item da visualizzare, l'adapter lo crea/ricicla personalizzandolo e poi lo gira alla ListView.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store