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 :

ListView et UrlImageViewHelper librairie


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
    Août 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2003
    Messages : 117
    Par défaut ListView et UrlImageViewHelper librairie
    Bonjour,

    Le code qui suit, me permet de parser une page internet est de récupérer tu texte et des images.

    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
    class htmlParser extends AsyncTask<Void, Void, String [][]> {
            private String error=null;
            @Override
            protected String [][] doInBackground(Void... params){
                try {
                        Document myDoc = Jsoup.connect("http://www.mon_site.fr").get();
                        Elements myArticles = myDoc.select("div.list");
                        for (Element myArticle : myArticles) {
                            Elements balisesA = myArticle.select("a");
                            articles = new String[balisesA.size()][5];
                            for (int i = 0; i < balisesA.size(); i++) {
                                articles[i][0] = balisesA.get(i).getElementsByClass("title").text();
                                articles[i][1] = balisesA.get(i).getElementsByClass("price").text();
                                articles[i][2] = balisesA.get(i).attr("href");
                                articles[i][3] = balisesA.get(i).getElementsByClass("placement").text();
                                
                                Elements img = balisesA.get(i).select("img");
                                for (Element el : img) {
                                    String src = el.absUrl("src");
                                    articles[i][4] = src;
                                }
                            }
                        }
                }
                catch (Exception e){
                    error=e.getMessage();
                    e.printStackTrace();
                }
                return articles;
            }
    
            protected  void onPostExecute(String[][] result){
                super.onPostExecute(result);
    
                ListView maAdsListView = (ListView) findViewById(R.id.listView);
                ArrayList<HashMap<String, Object>> myAdsList = new ArrayList<HashMap<String, Object>>();
                HashMap<String, Object> map;
    
                for (int i = 0; i < articles.length; i++){
                    map = new HashMap<String, Object>();
                    map.put("titre", articles[i][0]);
                    map.put("description", articles[i][1]);
    
                    if (articles[i][4] == null){
                        map.put("image", String.valueOf(R.drawable.image_indispo));
                    } else {
                      Utiliser la librairie urlimageviewhelper ICI pour afficher les images distantes
                    }
                    myAdsList.add(map);
                }
    
    
                SimpleAdapter mSchedule = new SimpleAdapter(getBaseContext(), myAdsList, R.layout.affichage_ads,
                        new String[] {"image", "titre", "description"}, new int[] {R.id.ad_img, R.id.ad_titre, R.id.ad_description});
                maAdsListView.setAdapter(mSchedule);
            }
    }
    Le code fonctionne parfaitement mais je ne parvient pas à utiliser la librairie urlimageviewhelper (https://github.com/koush/UrlImageViewHelper)qui permet de télécharger les images et de les afficher.
    Donc, est-il possible d'utiliser cette librairie dans ce type de code et comment ou faut-il modifier mon code ?????
    Bien sur, si vous connaissez une autre librairie du même type je suis preneur !

    Merci d'avance....

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Tu ne pourras pas obtenir ce que tu veux avec "SimpleAdapter" (qui, comme son nom l'indique est... "simple"). D'ailleurs c'est quasi toujours un mauvais choix SimpleAdapter (brrrrr les Listes de Maps).

    1. Utiliser un objet de données structuré (et surtout fortement typé) (href par exemple est de type URL, price de type BigDecimal, etc...).

    2. Surcharger ArrayAdapter (en particulier la méthode getView()) pour remplir les élements, et LA, tu auras d'une part une ImageView d'autre part une URL.... donc possibilité d'utiliser toute librairie nécessaire au chargement distant d'images.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2003
    Messages : 117
    Par défaut
    Merci Microman pour ces informations.
    Entre temps j'ai trouvé un tuto (http://www.androidhive.info/2012/02/...mage-and-text/)dont je me suis inspiré et qui marche à merveille.

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

Discussions similaires

  1. Recherche une librairie ou solution pour une ListView custom
    Par skypaps dans le forum Composants graphiques
    Réponses: 3
    Dernier message: 15/01/2014, 16h34
  2. listview ??
    Par Galdarion dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/09/2002, 17h02
  3. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49
  4. ListView
    Par SnickeursMan dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/08/2002, 10h42
  5. compatibilité des librairies directX8
    Par Freakazoid dans le forum DirectX
    Réponses: 3
    Dernier message: 23/05/2002, 21h33

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