Autore Topic: Listview con immagini diverse per ogni elemento  (Letto 1050 volte)

Offline zak84

  • Utente normale
  • ***
  • Post: 165
  • Respect: +2
    • Mostra profilo
Listview con immagini diverse per ogni elemento
« il: 24 Agosto 2012, 15:11:06 CEST »
0
Ciao a tutti, ho un problema con la mia ListView:

L'xml degli item della ListView ha una textView e una Imageview, per ogni item preso dal DB, devo mettere una immagine dedicata (basata sull' _id).

Ho questo codice che funziona (ma senza immagini):
Codice: [Seleziona]
mio_db.openDataBase();
final Cursor data=mio_db.catalogo_prodotti();
final ListView listView1 = (ListView) findViewById(R.id.list_mia_2);
String[] from = new String[] {"prodotto","_id"};
int[] to = new int[] {R.id.nome_prodotto_lista,R.id.freccia_prodotto_lista};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.mia_lista_2, data, from, to);
listView1.setAdapter(adapter);

Per esempio, se il mio _id è 4 io devo mettere una immagine che si chiama freccia_4 dentro a R.id.freccia_prodotto_lista

Non sò come procedere!

Potete aiutarmi?

Offline rs94

  • Utente normale
  • ***
  • Post: 227
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson Xperia Arc S
  • Sistema operativo:
    Windows 8
Re:Listview con immagini diverse per ogni elemento
« Risposta #1 il: 24 Agosto 2012, 15:16:22 CEST »
0
Creati un custom adapter basato (ad esempio) su un arrayadapter. Nel costruttore gli passi i dati che ti servono (come i percorsi ai file immagine) e nel metodo getview (di cui fai override) associ ogni immagine alla linea corrispondente

http://www.anddev.it/index.php/topic,413.0.html


In questo tutorial si usa un simpleadapter, con un arrayadapter è molto simile :)
L'unica certezza è il dubbio.
Dubitare di se stessi è il primo segno di intelligenza.

Offline zak84

  • Utente normale
  • ***
  • Post: 165
  • Respect: +2
    • Mostra profilo
Re:Listview con immagini diverse per ogni elemento
« Risposta #2 il: 24 Agosto 2012, 16:01:59 CEST »
0
Grazie, ci sono riuscito!
Non ho capito il concetto nel creare una classe Person (penso si possa fare tutto nella princilape), ma ok!
Questo è il codice che ho creato:
Codice: [Seleziona]
        setContentView(R.layout.prodotti);
        final Database_mio database_classe=new Database_mio(this);
            database_classe.openDataBase();
            final Cursor data_mio=database_classe.catalogo_prodotti();
            ArrayList<Prodotto_per_lista> personList=new ArrayList<Prodotto_per_lista>();
            int prodotto=data_mio.getColumnIndex("prodotto");
            int id_immagine=data_mio.getColumnIndex("_id");
            while(data_mio.moveToNext()){
                    switch(Integer.parseInt(data_mio.getString(id_immagine))){
                            case 1:
                                    personList.add(new Prodotto_per_lista(R.drawable.freccia_1,data_mio.getString(prodotto)));
                                    break;
                            case 18:
                                    personList.add(new Prodotto_per_lista(R.drawable.freccia_18,data_mio.getString(prodotto)));
                                    break;
                            case 23:
                                    personList.add(new Prodotto_per_lista(R.drawable.freccia_23,data_mio.getString(prodotto)));
                                    break;
                            case 28:
                                    personList.add(new Prodotto_per_lista(R.drawable.freccia_28,data_mio.getString(prodotto)));
                                    break;
                            case 30:
                                    personList.add(new Prodotto_per_lista(R.drawable.freccia_30,data_mio.getString(prodotto)));
                                    break;
                            case 35:
                                    personList.add(new Prodotto_per_lista(R.drawable.freccia_35,data_mio.getString(prodotto)));
                                    break;
                            case 41:
                                    personList.add(new Prodotto_per_lista(R.drawable.freccia_41,data_mio.getString(prodotto)));
                                    break;
                            case 48:
                                    personList.add(new Prodotto_per_lista(R.drawable.freccia_48,data_mio.getString(prodotto)));
                                    break;
                            case 53:
                                    personList.add(new Prodotto_per_lista(R.drawable.freccia_53,data_mio.getString(prodotto)));
                                    break;
                            case 57:
                                    personList.add(new Prodotto_per_lista(R.drawable.freccia_57,data_mio.getString(prodotto)));
                                    break;
                    }
            }
        ArrayList<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>();
        for(int i=0;i<personList.size();i++){
                Prodotto_per_lista p=personList.get(i);
                HashMap<String,Object> personMap=new HashMap<String, Object>();
                personMap.put("name", p.getName());
                personMap.put("image", p.getPhotoRes());
                data.add(personMap);
        }
        String[] from={"name","image"};
        int[] to={R.id.nome_prodotto_lista,R.id.freccia_prodotto_lista};
        SimpleAdapter adapter=new SimpleAdapter(
                        getApplicationContext(),
                        data,
                        R.layout.mia_lista_2,
                        from,
                        to);
        ((ListView)findViewById(R.id.list_mia_2)).setAdapter(adapter);

Offline zak84

  • Utente normale
  • ***
  • Post: 165
  • Respect: +2
    • Mostra profilo
Re:Listview con immagini diverse per ogni elemento
« Risposta #3 il: 24 Agosto 2012, 17:38:27 CEST »
0
il problema è che ora, nella listview gli item hanno preso gli id dell'array e non quelli del database (come era in precedenza)