Problème d'adaptation avec la classe Bitmap
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...-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 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
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
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
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;
}
} |