Autore Topic: Prelevare ImageView come stringhe per una listview  (Letto 241 volte)

Offline Nemesis

  • Nuovo arrivato
  • *
  • Post: 18
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Linux Debian Testing
Prelevare ImageView come stringhe per una listview
« il: 16 Giugno 2015, 17:02:11 CEST »
0
Salve a tutti  ragazzi, spero di essere nella sezione giusta
+ho un problema che non riesco a risolvere da ieri che sto cercando una maledetta soluzione:

Come diavolo faccio, a prendere un'immagine come "Stringa", da un database? E' stringa nel database, di conseguenza il metodo get dell'oggetto interessato è una stringa.

Vi spiego velocemente :
-Devo visualizzare 2 textview e un'img in una listView.
-Nel mio adapter, sono andato ad assegnare facilmente i 3 oggetti(ho utilizzato il pattern ViewHolder) con gli ID , presenti nel Layout XML riga della mia listView.  cosi facendo :
Codice (Java): [Seleziona]
viewHolder.iconaSottoMenu = (ImageView) riga.findViewById(R.id.iconaSottoMenu);
-Quando vado poi a settare questi oggetti, per le 2 TexView  ho zero problemi , facendo qualcosa di questo tipo:
Codice (Java): [Seleziona]
viewHolder.titoloIconaSottomenu.setText(sottoMenu.getTitoloIcona());
In questo modo lui cosa fa? si setta sull'oggetto titoloIconaSottomenu, tutte le stringhe tramite il metodo *getTitoloIcona* dell'oggetto sottoMenu, prendendole dal database(*plist*), e se le prende ovviamente grazie ad un parse dei dati completo che ho implementato nella mia persistenza.

Ora per le immagini invece è un problema, perché queste le deve prendere da "drawable", e quindi ogni nome delle img deve corrispondere al nome presente nel dabase, dove sono STRINGHE, e quando vado a fare quindi qualcosa di questo tipo:

Codice (Java): [Seleziona]
viewHolder.iconaSottoMenu.setImageDrawable(Singleton.getIstance().getResources().getDrawable(sottoMenuCorrente.getIconaSottomenu()));
Mi da problemi perché il metodo getDrawable restituisce un INT! ho provato a settare il parse integer, ma mi crasha l'applicazione. Ho provato allora a fare qualcosa di questo tipo:
Codice (Java): [Seleziona]
Resources res = Singleton.getInstance().getResources();
        String mDrawableName = sottoMenu.getIcona();
        int resID = res.getIdentifier(mDrawableName, "drawable", Singleton.getInstance().getPackageName());
        Drawable drawable = res.getDrawable(resID);
        Log.i("IDDRAWABLE" ,  "" + drawable);
        viewHolder.iconaSottoMenu.setImageDrawable(drawable);

Ma niente, al logger non ci arriva, il problema è l'assegnazione del id a drawable.

Suggerimenti?
Ovviamente vorrei evitare di andare a settare per ogni elemento di questa lista sottoMenu, la singola immagine.
Grazie a tutti e spero di essere stato abbastanza chiaro :)



Post unito: [time]17 Giugno 2015, 11:21:16 CEST[/time]
Risolto!!!

All'interno sempre del metodo getView del mio Adapter :

Codice (Java): [Seleziona]
String immagini = sottoMenu.getIcona();
        //Log.i("PROVAAAAAA", ""+immagini); //OK
        int resId = Singleton.getInstance().getResources().getIdentifier(immagini, "drawable" ,Singleton.getInstance().getPackageName());
        //Log.i("PROVAAAAAA", "" + resId); //OK
        viewHolder.iconaSottoMenu.setImageResource(resId);

Il problema lo avevo anche in questo caso, ma ho capito qual'era, le stringhe ricevute dal database , con il getIcona, erano del tipio : icona1.png
Ma lui in drawable le vede semplicemente come : icona1
Quindi senza l'estensione!!!! Quindi semplice problema di nome oggetto, che ho risolto facilmente :D
« Ultima modifica: 17 Giugno 2015, 11:24:27 CEST da Nemesis »