IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Prendre des Image URL et Afficher en utilisant ListView


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 57
    Par défaut Prendre des Image URL et Afficher en utilisant ListView
    Bonjour,

    Problème: le format de Image URL récupéré est Bitmap ou Drawable,
    Quand ma Listview utilise Listview avec HashMap<String,String>
    HashMap<String,String> qui a bien marché avec R.drawable.bitmappng1
    ListView va afficher: 1 Image et 2 string

    j'ai utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HashMap<String,String> map;
    et ArrayList<HashMap<String,String>> listItem = new ArrayList<HashMap<String,String>>();
    si je utilise le bitmap à local dans répétoire drawable: ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map.put("img", String.valueOf(R.drawable.bitmappng1));
    - je peur récupérer des images URL mais sur le format: Bitmap ou Drawable.

    Comment on peut chager le format de Bitmat, Drawable à Integer comme (R.drawable.poi2) ???

    J'a déjà essayé avec HashMap<String,Object> map ; mais ne pas marché

    merci à tout !

  2. #2
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    je peur récupérer des images URL mais sur le format: Bitmap ou Drawable.
    Essaye de créer une correspondance entre une chaîne et une bitmap ou drawable via un objet ou tu n'auras qu'a insérer le nom url dans la HashMap et de sauvegarder cet objet dans une Array .

    Lors de l'affichage de la view, récupères la bitmap correspondant au nom .

    Du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Class ImageURL  
     
        String url ;
        Bitmap image;

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 57
    Par défaut
    Hi

    en fait, je voudrais afficher dans Listview: image + string

    et j'ai déjà utilisé: SimpleAdapter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SimpleAdapter mSchedule = new SimpleAdapter (this.getBaseContext(), listItem, R.layout.affichageitem,
                    new String[] {"img", "titre", "description"}, new int[] {R.id.img, R.id.titre, R.id.description});
     
            maListViewPerso.setAdapter(mSchedule);
    Avec afficageitem: fichier xml contient : ImageView et Textview.

    à votre avis.

    dans ce cas: est ce que il faut faire extends de classes:
    - SimpleAdapter
    - ArrayAdapter<T>
    - SimpleCursorAdapter

    et quelle classes est favorable ?

    et quelle method dans nouveau sous-classes

    merci
    -

  4. #4
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Personnellement je passerais par une nouvelle class qui hériterait de BaseAdapter.

    un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public class  TonAdapter extends BaseAdapter {
     
            public TonAdapter(Context c ) {
     
            }
     
            public int getCount() {
                return nb_element; // ici la taille de ton tableau
            }
     
            public Object getItem(int position) {
                return null;
            }
     
            public long getItemId(int position) {
                return 0;
            }
     
            // create a new  for each item referenced by the Adapter
            public View getView(int position, View convertView, ViewGroup parent) {
             	// enfin ici tu poura gérer ta vue par ligne en y insérant ton image et le texte en fonction de la position 
     
            }
        }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 57
    Par défaut
    Merci votre réponse

    je viens d'essayer avec ArrayAdapter, C'est bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class MyCustomAdapter extends ArrayAdapter<String>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public MyCustomAdapter(Context context, int textViewResourceId,String[] objects) {
    			     super(context, textViewResourceId, objects);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public View getView(int position, View convertView, ViewGroup parent)

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Novembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2010
    Messages : 9
    Par défaut affichage image depuis URL utilisant simpleadapter
    Bonjour,
    est-ce que vous pouvez m'aider svp? avec mon code, quand je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();
     
    HashMap<String, String> map;
     
    map = new HashMap<String, String>();
     
    map.put("username",member.getUsername());					map.put("age",String.valueOf(member.getAge()));
     
    URL picture = new URL(member.getUrlPicture(member.getPhoto()).toString());
    Bitmap image= BitmapFactory.decodeStream(picture.openStream());
    map.put("avatar", image);
     
    listItem.add(map); 
     
    final SimpleAdapter mSchedule = new SimpleAdapter (Main.this.getBaseContext(), listItem, R.layout.affichageitem,new String[] {"avatar","username", "age"}, new int[] {R.id.pic,R.id.user,R.id.age});
    listViewMember.setAdapter(mSchedule);
    l'image ne s'affiche pas mais me met en log:
    ... resolveUri failed on bad bitmap uri: android.graphics...... à chaque image

    alors que si je remplace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map.put("avatar", image);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map.put("avatar", String.value.of(R.drawable.icon));
    bah l'image par défaut d'android peu s'afficher correctement

    je ne vois pas où est le problème.

    est-ce au niveau de URL (au lieu de URI dont je ne sais pas faire la différence);
    est-ce au niveau de mon SimpleAdapter?

    franchement c'est assez urgent, merci!!!

  7. #7
    Membre actif
    Inscrit en
    Mars 2011
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 62
    Par défaut simple adapter listview android in OnClickListener() du boutton
    Citation Envoyé par Feanorin Voir le message
    Bonjour,



    Essaye de créer une correspondance entre une chaîne et une bitmap ou drawable via un objet ou tu n'auras qu'a insérer le nom url dans la HashMap et de sauvegarder cet objet dans une Array .

    Lors de l'affichage de la view, récupères la bitmap correspondant au nom .

    Du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Class ImageURL  
     
        String url ;
        Bitmap image;
    slt cv?
    j'ai déjà parser des information dans textview avec json mais lorsque je change mon code avec une listview sa marche pas au niveau simpleAdapter
    et il ma données cette erreur :
    The constructor SimpleAdapter(new View.OnClickListener(){}, ArrayList<HashMap<String,Object>>, int, String[], int[]) is undefined

    et ca mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    package com.saturne.externalDB;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.HashMap;
    
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import android.app.ListActivity;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.AdapterView;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    import android.widget.TextView;
    import android.widget.AdapterView.OnItemClickListener;
     
    public class Main extends ListActivity  {
    
    String URL = "http://www.forsa2buy.com/android/annoncestest.php?";
     
    	//  private static final String CLASSTAG = SimpleGet.class.getSimpleName();
     
    	    private EditText getLogin;
    	  //  private EditText getPassword;
    	    private TextView getOutput;
    	    private Button getButton;
     
    	    @Override
    	    public void onCreate(Bundle icicle) {
    	        super.onCreate(icicle);
    	        setContentView(R.layout.main);
    	       
    	        this.getLogin = (EditText) findViewById(R.id.get_login);
    	       // getLogin.setText("");
    	        
    	        
    	        
    	      //  this.getPassword = (EditText) findViewById(R.id.get_password);
    	      //  getPassword.setText("");
    	        this.getOutput = (TextView) findViewById(R.id.get_output);
    	        this.getButton = (Button) findViewById(R.id.get_button);
     
    	        this.getButton.setOnClickListener(new OnClickListener() {
     
    	            public void onClick(View v) {
    	            	
    	         ArrayList<HashMap<String, Object>> mylist = new ArrayList<HashMap<String, Object>>();
    	            	//getOutput.setText("");
    	            	String logintophp = "&search="+getLogin.getText().toString();
    	            		   final JSONObject json = JSONfunctions.getJSONfromURL(URL+logintophp);
    	            		   try{
    	            	        	
    	            	        	JSONArray  forsa2buy = json.getJSONArray("forsa2buy");
    	            	        	
    	            		        for(int i=0;i<forsa2buy.length();i++){						
    	            					HashMap<String, Object> map = new HashMap<String, Object>();	
    	            					JSONObject e = forsa2buy.getJSONObject(i);
    	            					
    	            					map.put("prix",  String.valueOf(i));
    	            		        	map.put("prix", "" + e.getString("prix"));
    	            		        	map.put("titre", "" + e.getString("titre"));
    	            		        	map.put("nom", "" + e.getString("nom"));
    	            		        	map.put("id", "" + e.getString("id"));
    	            		        	//map.put("photo",bitmap);
    	            		        	//map.put("photo", "" + e.getString("photo"));
    	            		        	URL aURL = new URL(e.getString("photo")); 
    	            		        	
    	            		        	Bitmap bitmap = BitmapFactory.decodeStream(aURL.openStream());
    	            		        	
    	            		        	//bitmap.getScaledHeight(200);
    	            		        	//bitmap.getScaledWidth(100);
    	            		        	map.put("photo",bitmap);
    	            		        		        	
    	            		        	//map.put("magnitude", "Magnitude: " +  e.getString("magnitude"));
    	            		        	mylist.add(map);			
    	            				}		
    	            	        }catch(JSONException e)        {
    	            	        	 Log.e("log_tag", "Error parsing data "+e.toString());
    	            	        } catch (MalformedURLException e) {
    	            				// TODO Auto-generated catch block
    	            				e.printStackTrace();
    	            			} catch (IOException e) {
    	            				// TODO Auto-generated catch block
    	            				e.printStackTrace();
    	            			}
    	            	        
    	            	        SimpleAdapter adapter = new SimpleAdapter(this, mylist , R.layout.annoncevehicules, 
    	            	                        new String[] { "prix","titre","nom","photo" }, 
    	            	                        new int[] { R.id.annoncesvehprix ,R.id.annoncesvehtitre,R.id.annoncesvehnom,R.id.bt  });
    	            	        adapter.setViewBinder(new MyViewBinder());
    	            	        setListAdapter(adapter);
    	            	        
    	            	        
    	            	        final ListView lv = getListView();
    	            	        lv.setTextFilterEnabled(true);	
    	            	        lv.setOnItemClickListener(new OnItemClickListener() {
    	            	        	public void onItemClick(AdapterView<?> parent, View view, int position, long id) {        		
    	            	        		@SuppressWarnings("unchecked")
    	            					HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position);	        		
    	            	        		//Toast.makeText(Famille_plat.this, "NAME '" + o.get("id") + "' was clicked.", Toast.LENGTH_SHORT).show(); 
    	            	        		
    	            	        		//pd = ProgressDialog.show(Famille_plat.this, "Obtenir les plats",
    	            	                   //     "S'il vous pla�t patienter pendant que nous recherchons...", true, false);
    	            	        	//	
    	            	        		
    	            				}
    
    	            				
    	            				});
    	              //  String logintophp = "&search="+getLogin.getText().toString();
    	               // String passwordtophp = "&password="+getPassword.getText().toString();
    	                
    	              //  String output = getHttpResponse(URL+logintophp);
    	               // if (output != null) {
    	                 //   getOutput.setText(output);
    	            		    /*******************************************/
    	                }
    	           // }
    	        });
    	    };
     
    	    /**
    	     * Perform an HTTP GET with HttpUrlConnection.
    	     * 
    	     * @param location
    	     * @return
    	     */
    	   // private String getHttpResponse(String location) {
    	     //   StringBuffer result = new StringBuffer();
    	    //    URL url = null;
    	        // Log.d(Constants.LOGTAG, " " + SimpleGet.CLASSTAG + " location = " + location);
    	 
    	      //  try {
    	      //      url = new URL(location);
    	            //   Log.d(Constants.LOGTAG, " " + SimpleGet.CLASSTAG + " url = " + url);
    	     //   } catch (MalformedURLException e) {
    	        	//  Log.e(Constants.LOGTAG, " " + SimpleGet.CLASSTAG + " " + e.getMessage());
    	      //  }
    	 
    	    //    if (url != null) {
    	         //   try {
    	             //   HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
    	             //   BufferedReader in = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
    	            //    String inputLine;
    	 
    	            //    int lineCount = 0; // limit the lines for the example
    	            //    while ((lineCount < 10) && ((inputLine = in.readLine()) != null)) {
    	                  //  lineCount++;
    	                    //  Log.v(Constants.LOGTAG, " " + SimpleGet.CLASSTAG + " inputLine = " + inputLine);
    	                    
    	                 //   result.append(inputLine);
    	                    //result += "\n" + inputLine;
    	              //  }
    	 //
    	             //   in.close();
    	             //   urlConn.disconnect();
    	 
    	          //  } catch (IOException e) {
    	               // Log.e(Constants.LOGTAG, " " + SimpleGet.CLASSTAG + " " + e.getMessage());
    	          //  }
    	     //   } else {
    	        	//  Log.e(Constants.LOGTAG, " " + SimpleGet.CLASSTAG + " url NULL");
    	    //    }
    	    //    return result.toString();
    	   // }
     
    		public void onClick(View arg0) {
    			// TODO Auto-generated method stub
    			
    		}
    	}

  8. #8
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Bonjour,

    Je pense que tu as un problème sur ta déclaration du SimpleAdapter.

    http://developer.android.com/referen...leAdapter.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
    Donc dans ton code utilise GetBAseContext() ou GetApplicationContext() pour récupérer le bon Context :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SimpleAdapter adapter = new SimpleAdapter(GetApplicationContext(), mylist , R.layout.annoncevehicules, 
    	            	                        new String[] { "prix","titre","nom","photo" }, 
    	            	                        new int[] { R.id.annoncesvehprix ,R.id.annoncesvehtitre,R.id.annoncesvehnom,R.id.bt  });

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lister des images et les afficher
    Par Franck.H dans le forum ASP.NET
    Réponses: 1
    Dernier message: 22/08/2014, 16h52
  2. récupération des données pour les afficher dans une ListView
    Par khoukha1 dans le forum Composants graphiques
    Réponses: 5
    Dernier message: 14/06/2012, 14h59
  3. [Smarty] Comment construire l'url des images et css quand on utilise smarty ?
    Par shenzhu dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 07/12/2011, 10h53
  4. Réponses: 2
    Dernier message: 13/01/2010, 13h54
  5. Réponses: 1
    Dernier message: 01/04/2008, 18h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo