Comment afficher des images sur ImageView de données json dans android
Je reçois les données json. Dans ce json j'ai une url pour une image. Maintenant, je veux afficher l'Image dans l'ImageView. Comment puis-je faire réaliser cela? Voici mon code
class LoadInbox extends AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(Home.this);
pDialog.setMessage("Loading Inbox ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
/**
* getting Inbox JSON
* */
protected String doInBackground(String... arg0) {
//Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
JSONObject json = userFunctions.homeData();
Log.e("Data", json.toString());
//Check your log cat for JSON reponse
Log.d("Inbox JSON: ", json.toString());
try {
data = json.getJSONArray(TAG_DATA);
Log.d("inbox array: ", data.toString());
//looping through All messages
for (int i = 0; i < data.length(); i++) {
JSONObject c = data.getJSONObject(i);
//Storing each json item in variable
String profile_img = c.getString(TAG_PROFILE_IMG);
//creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
//adding each child node to HashMap key => value
map.put(TAG_PROFILE_IMG, profile_img);
//adding HashList to ArrayList
inboxList.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String file_url) {
//dismiss the dialog after getting all products
pDialog.dismiss();
//updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
/**
* Updating parsed JSON data into ListView
* */
ListAdapter adapter = new SimpleAdapter(
Home.this, inboxList,
R.layout.home_list_item, new String[] { TAG_PROFILE_IMG },
new int[] { R.id.profile_img2 });
//updating listview
setListAdapter(adapter);
}
});
}
voici ma mise en page
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageView
android:id="@+id/profile_img2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="8dip"
android:paddingLeft="8dip"
android:paddingBottom="4dip" />
</RelativeLayout>
OriginalL'auteur 2619 | 2012-06-04
Vous devez vous connecter pour publier un commentaire.
De sorte que vous aurez envie de créer un autre AsyncTask que donné une URL de charger l'image, et de remplir un certain contrôle. En général, je fais quelque chose comme ça:
La ImageLoader serait une autre AsyncTask comme ceci:
Ensuite, vous pouvez lancer cette AsyncTask éteint lorsque l'image est lié à votre ListView par la création de votre propre sous-classe ListAdapter. Ainsi, vous aurez à fossé à l'aide de SimpleAdapter parce que les choses ne sont pas simples plus. Cela a beaucoup d'avantages afin que vous ne charger les images affichées. Cela signifie qu'un très petit nombre est chargé de la totale. Aussi votre utilisateur peut voir les données avant que l'image de charges pour un accès plus rapide aux données. Si vous avez cela dans votre AsyncTask vous auriez du chargement de chaque image, et l'utilisateur devra attendre pour chacun de se terminer avant les données sont affichées à l'utilisateur. Il y a des choses qui peuvent être améliorées par cette. Un AsyncTask utilise son propre sujet afin que vous serez en cours d'exécution beaucoup de discussions potentiellement (10 ou plus) à la fois. Qui peuvent tuer votre serveur avec beaucoup de clients. Vous pouvez centraliser l'aide d'un ExecutorService (c'est à dire le pool de thread), mais vous aurez à fossé à l'aide de AsyncTask et de mettre en œuvre votre propre installation pour exécuter le travail hors de la thread d'INTERFACE utilisateur et d'afficher les résultats sur le thread d'INTERFACE utilisateur. Deuxièmement, vos images vous permettra de charger à chaque fois que l'utilisateur fait défiler. Pour cela j'ai mis en place mon propre schéma de cache basé sur l'URI de l'image de sorte que je charge l'image une fois et de le retourner à partir du cache. C'est un peu trop de code à poster ici, mais ce sont des exercices pour le lecteur.
Également remarquer que je ne suis pas une publication sur le thread de l'INTERFACE utilisateur dans onPostExecute(). C'est parce que AsyncTask n'est que pour moi, je n'ai pas à le faire à nouveau votre code ci-dessus montre. Vous devez simplement supprimer supplémentaire praticable et insérer le code dans onPostExecute().
new ImageLoader( person.getImageUri(), imageView, 128, 128 ).execute();
Et aussi je n'ai pas eu
person.getImageUri
. Qu'est-ce que personne ici?Vous savez comment faire pour démarrer une AsyncTask droit? La fin de ligne .execute() provoque simplement l'AsyncTask pour s'exécuter. Je vais ajouter un constructeur pour le code de l'exhaustivité. La personne.getImageUri() est juste un support pour quelque URI de l'image que vous tentez de charger. Essentiellement, ce AsyncTask n'est de charger une image à partir d'un URI HTTP, et met à jour une ImageView.
Dois-je écrire dans mon actuel LoadInbox AsynTask? Je suis toujours avoir des problèmes avec cette ligne. Je n'ai aucune idée de où puis-je le mettre dans mon code.
Je pense que j'ai couvert que dans le texte de la réponse. Lire la réponse de nouveau son dans les deux premières phrases. Le long de avec d'autres choses à prendre en considération.
OriginalL'auteur chubbsondubs
vous pouvez essayer picasso est vraiment facile à utiliser et fonctionne vraiment bien.
Et c'est tout.
OriginalL'auteur ziniestro
Comme il semble que vous obtenez le plus d'une url (comme dans le tableau)
comme exemple paresseux imageloader......
http://iamvijayakumar.blogspot.in/2011/06/android-lazy-image-loader-example.html
http://codehenge.net/blog/2011/06/android-development-tutorial-asynchronous-lazy-loading-and-caching-of-listview-images/
Android de l'erreur de Mémoire avec un Chargement différé des images
Android chargement différé des images de la classe mange à tous ma mémoire
Chargement différé des images sur Listview dans android(Niveau Débutant)?
Chargement différé des images dans la ListView
recherche paresseux imageloader vous trouverez des tonnes de code........ 🙂 choisissez le meilleur ............
comme certains d'entre vous peuvent sortir de la question de la mémoire si trop d'images.......
OriginalL'auteur Dheeresh Singh