Aller au contenu

Problème d'adaptation avec la classe Bitmap


anto2b

Recommended Posts

Bonjour à tous, je récupère des données grâce à un parser XML qui utilise la méthode SAX. J'ai utiliser ce tutoriel (http://thibault-koprowski.fr/2010/10/15/tutoriel-parsing-xml-sous-android/

la fonction getThumb me renvoie l'adresse url de l'image de chaque article et j'aimerais l'afficher dans un ImageView mais je n'arrive pas à l'adapter dans mon ADAPTER et c'est pour cela que je fais appel à vous !!! Merci de votre aide

Voici mon adapter :

package com.rssreader;
import java.util.ArrayList;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class ListFeedAdapter extends BaseAdapter {// les données à afficher
private ArrayList<Feed> feeds;

// * Le LayoutInflater permet de parser un layout XML et de
// * te transcoder en IHM Android. Pour respecter l'interface
// * BaseAdapter

private LayoutInflater inflater;

public ListFeedAdapter(Context context,ArrayList<Feed> feeds) {
 inflater = LayoutInflater.from(context);
 this.feeds = feeds;

}

// * il nous faut spécifier la méthode "count()".
// * Cette méthode permet de connaître le nombre d'items présent
// * dans la liste. Dans notre cas, il faut donc renvoyer le nombre
// * de personnes contenus dans "mListP".

public int getCount() {
 return feeds.size();
}

 // Permet de retourner un objet contenu dans la liste

public Object getItem(int index) {
 return feeds.get(index);
}public long getItemId(int index) {
 return this.feeds.get(index).getId();

}

 // * Voici la partie la plus complexe de la classe

public View getView(int position, View convertView, ViewGroup parent){
 // * Le paramètre "convertView" permet de recycler les élements
 // * de notre liste. En effet, l'opération pour convertir un layout
 // * XML en IHM standard est très couteuse pour la plateforme Android.
 // * On nous propose ici de réutiliser des occurences créées qui ne sont
 // * plus affichées. Donc si ce paramètre est "null" alors, il faut "inflater"
 // * notre layout XML, sinon on le réutilise
 FeedView fv; 

 if (convertView == null) {
  fv = new FeedView();
  convertView = inflater.inflate(R.layout.feed_view, null);   fv.thumb = (TextView)convertView.findViewById(R.id.thumb);  
  fv.title = (TextView)convertView.findViewById(R.id.title);
  fv.pubDate = (TextView)convertView.findViewById(R.id.pub_date);
  convertView.setTag(fv);
 } else {
  fv = (FeedView) convertView.getTag();
 }	 
 fv.thumb.setText(feeds.get(position).getThumb());
 fv.pubDate.setText(feeds.get(position).getPubDate());
 fv.title.setText(feeds.get(position).getTitle());
 return convertView;
}}

Et voici un moyen d'afficher l'image grâce à la classe Bitmap

package com.img;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;

public class ImageTestActivity extends Activity {

String image_URL=
"http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png";

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);

      ImageView bmImage = (ImageView)findViewById(R.id.img);
   BitmapFactory.Options bmOptions;
   bmOptions = new BitmapFactory.Options();
   bmOptions.inSampleSize = 1;
   Bitmap bm = LoadImage(image_URL, bmOptions);
   bmImage.setImageBitmap(bm);
  }

  private Bitmap LoadImage(String URL, BitmapFactory.Options options)
  {       
   Bitmap bitmap = null;
   InputStream in = null;       
      try {
          in = OpenHttpConnection(URL);
          bitmap = BitmapFactory.decodeStream(in, null, options);
          in.close();
      } catch (IOException e1) {
      }
      return bitmap;               
  }

private InputStream OpenHttpConnection(String strURL) throws IOException{
InputStream inputStream = null;
URL url = new URL(strURL);
URLConnection conn = url.openConnection();

try{
 HttpURLConnection httpConn = (HttpURLConnection)conn;
 httpConn.setRequestMethod("GET");
 httpConn.connect();

 if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
  inputStream = httpConn.getInputStream();
 }
}
catch (Exception ex)
{
}
return inputStream;
}
}

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...