Autore Topic: Da url a ImageView  (Letto 632 volte)

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Da url a ImageView
« il: 02 Ottobre 2014, 09:51:18 CEST »
0
Ciao ragazzi, sono sempre alle prese con le richieste http e la visualizzazione dei dati in un'app. In un precedente post anche grazie al vostro aiuto sono riuscito a creare una view personalizzata di una arrayadapter che riceve dati dalla rete in formato json.

Uno dei dati ricevuti è la stringa contenete l'url di un'immagine associata all'informazione scaricata.

In pratica io scarico un json contenete delle news di un sito per ogni news creo un oggetto News con i dati relativi e li piazzo in una listview con layout personalizzato contenete più dati, vorrei usare la stringa della url per far apparire l'imamgine associata di fianco, come faccio con la url a caricare un'immagine in una imageview?

Offline arlabs

  • Utente normale
  • ***
  • Post: 430
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Da url a ImageView
« Risposta #1 il: 02 Ottobre 2014, 11:12:09 CEST »
0
Cercavi questo?

android - Load image from url - Stack Overflow

Ovviamente, è consigliabile caricarla in un thread a parte, magari anche nell'AsynchTask che già userai per la richiesta http.

Ciao.
« Ultima modifica: 02 Ottobre 2014, 11:15:21 CEST da arlabs »

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:Da url a ImageView
« Risposta #2 il: 02 Ottobre 2014, 11:21:39 CEST »
0
oppure usare la libreria Picasso
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Re:Da url a ImageView
« Risposta #3 il: 02 Ottobre 2014, 15:30:25 CEST »
0
Con sole tre righe di codice? Perfetto lo provo, avevo trovato solo cose con le classi il download dell'immagine ecc ecc infatti mi serviva proprio qualcosa di così semplice. Però mi domandavo anche un'altra cosa , anche se credo che sia una pratica poco elegante ma forse utilizzata: se si mettesse l'immagine in una webview? So che è fattibile ma si usa oppure ho detto un'eresia hahahah?

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:Da url a ImageView
« Risposta #4 il: 02 Ottobre 2014, 16:02:06 CEST »
0
Con sole tre righe di codice? Perfetto lo provo, avevo trovato solo cose con le classi il download dell'immagine ecc ecc infatti mi serviva proprio qualcosa di così semplice.

Con Picasso basta una riga:
Codice (Java): [Seleziona]
Picasso.with(context).load("http://example.com/logo.png").into(imageView);
Però mi domandavo anche un'altra cosa , anche se credo che sia una pratica poco elegante ma forse utilizzata: se si mettesse l'immagine in una webview? So che è fattibile ma si usa oppure ho detto un'eresia hahahah?

Instanziare un browser per ogni immagine non è male!  ;-)

E' come pilotare la lampada di un lampione con una scheda video da 1GB RAM.  :-P
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Re:Da url a ImageView
« Risposta #5 il: 02 Ottobre 2014, 20:54:22 CEST »
0
Ok grazie, ma picasso è una libreria esterna non è nativa di android? Io vorrei prima imparare a fare tutto con gli strumenti messi a disposizione dal tool.

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Re:Da url a ImageView
« Risposta #6 il: 04 Ottobre 2014, 11:56:07 CEST »
0
Sto provando in tutti i modi ma non mi funziona, credo che sia il metodo getinputStream(); mi aiutate a correggere?

In pratica questa classe mi permette di usare una list view con row personalizzata.
L'url dell'immagine è contenuto nell'oggeto json news.getImmagine() che contiene in realtà anche altre info.
Ma quella che ci interessa io riesco ad isolarla nella variabile String image (ovvero la url);

Il tutto poi non mi funziona l'app si arresta quando apro l'activity che contiene la listView.


Codice (Java): [Seleziona]
public class NewsAdapter extends ArrayAdapter<News> {

        private int resource;
    private LayoutInflater inflater;
   
    public NewsAdapter(Context context, int resourceId, List<News> objects) {
                super(context, resourceId, objects);
                resource = resourceId;
        inflater = LayoutInflater.from(context);
        }
   
    @Override
    public View getView(int position, View v, ViewGroup parent) {
        // Recupero l'oggetto che doevo inserire a questa posizione
        News news = getItem(position);

        ViewHolder holder;

        if (v == null) {
            v = inflater.inflate(resource, parent, false);
            holder = new ViewHolder();
            holder.imageNews = (ImageView) v.findViewById(R.id.imageNews);
            holder.idNews = (TextView) v.findViewById(R.id.idNews);
            holder.titoloNews = (TextView) v.findViewById(R.id.titoloNews);
            holder.dataNews = (TextView) v.findViewById(R.id.dataNews);
            v.setTag(holder);
        } else {
            holder = (ViewHolder) v.getTag();
        }

       
       
       
        //CODICE NON FUNZIONANTE
        String jsonImage = news.getImmagine();
            JSONArray jsonArrayImage;
            Bitmap bmp = null;
            try {
                jsonArrayImage = new JSONArray(jsonImage);
                String image = jsonArrayImage.getJSONObject(0).getString("image");

                try {
                        URL url = new URL(image);
                        bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
                       
                       
                } catch (IOException e) {
                                e.printStackTrace();
                        }                      
            } catch (JSONException e) {
                        e.printStackTrace();
                }
        //////////////////////////
       
       
       
        holder.imageNews.setImageBitmap(bmp);
       
        holder.idNews.setText(news.getId());
        holder.titoloNews.setText(news.getTitolo());
        holder.dataNews.setText(news.getData());

        return v;
    }

    private static class ViewHolder {
        ImageView imageNews;
        TextView idNews;
        TextView titoloNews;
        TextView dataNews;
    }
       
}

Post unito: 04 Ottobre 2014, 14:18:49 CEST
Forse ho cpaito il problema il mio adapter io lo popolo nel metodo onPostExecute del task e forse è per questo che rifacendo un'altra connessione per ottener el'imamgine non mi funziona, dovrei aprire un altro task asincrono per ogni voce della lista? Oppure c'è un altro modo per il doInBackground di ottenere sia una stringa che un'immagine? Però il return lo posso impostare di un solo tipo.
« Ultima modifica: 04 Ottobre 2014, 14:18:49 CEST da Dav_android, Reason: Merged DoublePost »

Offline arlabs

  • Utente normale
  • ***
  • Post: 430
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Da url a ImageView
« Risposta #7 il: 06 Ottobre 2014, 14:19:20 CEST »
0
Il doInbackground può tornarti il tipo che vuoi (fatti una classe tu che contenga stringa ed immagine)
Basta che lo specifichi nell AsynchTask (terzo parametro).

Se hai una classe News, l'immagine puoi aggiungerla in quella stessa classe.

Ciao.

Offline Dav_android

  • Utente junior
  • **
  • Post: 78
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab2 10.1
  • Sistema operativo:
    Windows 8
Re:Da url a ImageView
« Risposta #8 il: 06 Ottobre 2014, 14:35:37 CEST »
0
Si infatti alla fine ho risolto in questo modo! Grazie.