Afficher des images venant de SQlite ou d’une URL dans une listView

Un problème rencontré lors de mes différents développements à été d’afficher des images provenant d’un champs Blob(SQlite) dans une zone image d’une listView.

Pour se faire, il faut tout d’abord créer une classe que j’appellerai ici « MyViewBinder », en voici donc le code :

import android.graphics.Bitmap;
import android.view.View;
import android.widget.ImageView;
import android.widget.SimpleAdapter.ViewBinder;

public class MyViewBinder implements ViewBinder
{
	public boolean setViewValue(View view, Object data,String textRepresentation)
        {
		if( (view instanceof ImageView) & (data instanceof Bitmap) )
                {
			ImageView iv = (ImageView) view;
			Bitmap bm = (Bitmap) data;
			iv.setImageBitmap(bm);
			return true;
		}
		return false;
	}

}

Il faut ensuite déclarer classiquement un HashMap mais de la façon suivante :

ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>(); //Déclaration de l'ArrayList qui recevra la liste de HashMap
HashMap<String, Object> map; //Déclaration du HashMap
map = new HashMap<String, Object>();

Vous pouvez ensuite y insérer l’image stocker dans un Bitmap de la façon suivante :
Le tout devra donc être dans un boucle pour remplir les différentes case de la listView

image = c.getBlob(3);  //Récupération du Blob
bmp  = BitmapFactory.decodeByteArray(image,0,image.length, null); //Conversion en Bitmap
map.put("img",bmp); //Mettre l'image dans le HashMap
listItem.add(map); //Mettre chaque HashMap dans l'ArrayList

Et enfin, l’affichage de tout cela

SimpleAdapter mSchedule = new SimpleAdapter (this.getBaseContext(), listItem,R.layout.affichageitem,
new String[] {"img", "ville", "type","prix","id"}, new int[] {R.id.img, R.id.ville, R.id.type,R.id.prix,R.id.id});
mSchedule.setViewBinder(new MyViewBinder());
listView.setAdapter(mSchedule);

Bien sûr, ce fonctionne marche également très bien pour les images provenant d’URLs externe.

Source : http://www.developpez.net/forums/d1032626/java/general-java/java-mobiles/android/prendre-image-url-afficher-utilisant-listview/

Tester la connexion internet

Vous n’avez jamais eu besoin de tester si votre application peux accéder à internet ou non ?
Eh bien rien de plus simple. Tout d’accord créez une classe classique, j’ai nommé la mienne « ConnexionInternet » dans l’exemple ci-dessous. Voici le code réalisant le test :


import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.NetworkInfo.State;

public class ConnexionInternet
{
    public static boolean isConnectedInternet(Activity activity)
    {
        ConnectivityManager connectivityManager = (ConnectivityManager)activity.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
        if (networkInfo != null)
        {
            State networkState = networkInfo.getState();
            if (networkState.compareTo(State.CONNECTED) == 0)
            {
                return true;
            }
            else return false;
        }
        else return false;
    }
}

Et enfin, le code pour l’utilisation de la fonction

if(ConnexionInternet.isConnectedInternet(MainActivity.this))
{
    //Je suis connecté à internet
}
else
{
    //Je ne suis pas connecté à internet
}