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

Android Discussion :

Alimenter une string[]


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut Alimenter une string[]
    Bonjour,

    Je vous demanderais un peu de complaisance car je débute sous Android :-)
    Ce que je vais demander va paraitre stupide pour certains mais là je suis énervé car je n'ai plus que cela qui bloque...

    Pour faire simple, je récupère des données provenant d'une base Sqlite que je voudrais afficher dans une listview, mais comme dans ces listview il y a des images qui sont sur le net, je dois me debrouiller pour faire du téléchargement asynchrone.

    J'ai testé diverse méthode, tutoriaux et autres pages de blog, et j'ai enfin réussi a trouver un truc qui marche et assez simple.

    J'ai donc incorporé l'exemple dans mon projet et cela fonctionne avec les données de l'exemple qui sont sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private String[] mStrings={
                "http://a3.twimg.com/profile_images/670625317/aam-logo-v3-twitter.png",
                "http://a3.twimg.com/profile_images/740897825/AndroidCast-350_normal.png",
                "http://a3.twimg.com/profile_images/121630227/Droid_normal.jpg",
                "http://a1.twimg.com/profile_images/957149154/twitterhalf_normal.jpg",
                "http://a1.twimg.com/profile_images/97470808/icon_normal.png",
                "http://a3.twimg.com/profile_images/511790713/AG.png",
                "http://a3.twimg.com/profile_images/956404323/androinica-avatar_normal.png",
                "http://a1.twimg.com/profile_images/909231146/Android_Biz_Man_normal.png"
        };
    Mais je n'arrive pas a construire un tableau (mais est ce un tableau ?) avec mes données...

    J'ai donc fais une fonction pour charger les données :
    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
     
       public void loadData() {
     
        	DatabaseHelper dbCon = new DatabaseHelper(this);
        	ArrayList<HashMap<String, String>> map = dbCon.getSeries();
        	int totalItem = map.size();
     
        	Booking2[] strImg = new Booking2[map.size()];
     
        	for (int i = 0; i <= totalItem; i++) {
        		strImg[i] = new Booking2(map.get(i).get("img").toString());
        	}
     
        }
     
     
        class Booking2 {
            String name;
            public Booking2(String name) {
                this.name = name;
            }
        }
    La boucle se fait bien, mais impossible de construire un truc qui ressemble à String[] mStrings.

    Est ce que quelqu'un voudrait bien m'aider s'il vous plait ?

    Un grand merci d'avance parce que cela fais deux jours que je suis sur cette histoire de téléchargement asynchrone...

    @+
    Cadou

  2. #2
    Rédacteur
    Avatar de Viish
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 427
    Par défaut
    Bonsoir,

    Le plus simple serait peut être de modifier la fonction de la classe DatabaseHelper pour qu'elle retourne directement un String[], car une ArrayList de Hashmap, c'est quand même assez sale niveau mémoire...

    Sinon en ce qui concerne la boucle elle même, je pense qu'il y a déjà une erreur ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int totalItem = map.size();
    Ici la variable totalItem va prendre le nombre de hashmap dans la liste, et non le nombre d'items dans les hashmaps.
    Il va sans doute falloir améliorer un peu l'algorithme.

    Bonne continuation.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 115
    Par défaut
    Pourquoi ne pas utiliser un arraylist comme tu le fait juste avant

    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 void loadData() {
            
        	DatabaseHelper dbCon = new DatabaseHelper(this);
        	ArrayList<HashMap<String, String>> map = dbCon.getSeries();
        	int totalItem = map.size();
     
        	//Booking2[] strImg = new Booking2[map.size()];
            ArrayList<Booking2> strImg = new ArrayList<Booking2>(totalItem);
    
        	for (int i = 0; i <= totalItem; i++) {
                    
        		//strImg[i] = new Booking2(map.get(i).get("img").toString());
                    strImg.add(new Booking2(map.get(i).get("img").toString());
        	}
     
        }
     
     
        class Booking2 {
            String name;
            public Booking2(String name) {
                this.name = name;
            }
        }

  4. #4
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Hello,

    Je vous remercie pour les réponses.

    @Viish => Non y a pas de problème, cela me renvoi ce que je veux..
    J'ai 104 items et chacun a 5 colonnes dont une colonne contenant l'url de l'image.

    @JediMaster => Je n'utilise pas de arraylist ou autre chose car j'ai déja essayé pas mal de truc dont un passage de ArrayList<HashMap<String, String>> via mon adapter, mais là j'ai cru comprendre que je ne peux passer que des trucs en string[].

    Je suis vraiment noob en programmation Android, pour le moment je fais des copier coller et je colle mes variables dedans. Je cherche juste a ce que dans un premier temps cela fonctionne.

    Donc comment fait t-on pour remplir un string[] dans une boucle tel que montré plus haut dans mon code ?

    Merci d'avance
    Cadoudal56

  5. #5
    Rédacteur
    Avatar de Viish
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 427
    Par défaut
    Le problème c'est que le code de ta boucle est bon.
    Peux tu faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (int i = 0; i < strImg.length; i++)
    {
    Log.d("String " + i, strImg[i]);
    }
    que l'on voit ce qu'il y a dans ton tableau, des fois que l'erreur ne vienne pas de là ?

  6. #6
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Re,

    @JediMaster => Non tu as pris le probleme a l'envers... Moi je veux obtenir ceci en sortant de ma boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private String[] mStrings={
                "http://a3.twimg.com/profile_images/670625317/aam-logo-v3-twitter.png",
                "http://a3.twimg.com/profile_images/740897825/AndroidCast-350_normal.png",
                "http://a3.twimg.com/profile_images/121630227/Droid_normal.jpg",
                "http://a1.twimg.com/profile_images/957149154/twitterhalf_normal.jpg",
                "http://a1.twimg.com/profile_images/97470808/icon_normal.png",
                "http://a3.twimg.com/profile_images/511790713/AG.png",
                "http://a3.twimg.com/profile_images/956404323/androinica-avatar_normal.png",
                "http://a1.twimg.com/profile_images/909231146/Android_Biz_Man_normal.png"
        };
    En clair comment je peux remplir mStrings dynamiquement comme par exemple dans une boucle tel que je le montre. Pour l'optimisation je verrais après.
    Et a la question pourquoi je veux absolument ce format là (parce que quelqu'un va la poser c'est sur), parce que pour le moment si je passe mStrings tel quel l'application fonctionne, mais dès que j'essaie de mettre mes données à la place, cela ne fonctionne plus...
    Donc je veux passer mes données dans le même format pour que cela fonctionne. Je verrais après pour optimiser le tout

    Viish => Cela me donne pour ce que tu me demandes, une belle erreur (eclipse refuse). Donc j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Log.i("LOGLOG", "Attention"+strImg[i].toString());
    Listeseries2$booking2@44ec6ad8

    Et pendant que j'y étais, j'ai fais le meme sur mStrings :
    LJava.lang.string:@44e75b78


    Personne n'a une idée de comment on remplit dynamiquement une string[] ?

    Merci d'avance
    Cadou

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 115
    Par défaut
    Ok, je comprends ce que tu veux mais je ne comprend pas pourquoi Booking2 existe (Je pensais que tu nous donnais qu'une partie) parce que c'est juste un string en fait.

    Voila le code pour créer ton String[] au lieu d'un Booking2[]

    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
    public void loadData() {
            
        	DatabaseHelper dbCon = new DatabaseHelper(this);
        	ArrayList<HashMap<String, String>> map = dbCon.getSeries();
        	int totalItem = map.size();
     
        	//Booking2[] strImg = new Booking2[map.size()];
            String[] strImg = new String[totalItem];
    
        	for (int i = 0; i <= totalItem; i++) {
                    
                    strImg[i] = new String(map.get(i).get("img").toString());
                    // ou strImg[i] = map.get(i).get("img").toString()
                    // je me rappel plus trop
        	}
     
        }
     
     
        class Booking2 {
            String name;
            public Booking2(String name) {
                this.name = name;
            }
        }
    PS: oublie pas que tu dois avoir tout le temps une hashmap avec pour clé "img" dans chaque HashMap.


    Listeseries2$booking2@44ec6ad8

    Et pendant que j'y étais, j'ai fais le meme sur mStrings :
    LJava.lang.string:@44e75b78
    ça c'est normal puisque strImg n'est pas une String mais un Objet Booking2 contenant une propriété string (name en l'ocurrence)
    Donc deux choix
    - soit tu override le ToString() de ta classe booking pour qu'elle affiche le name
    - soit au lieu de ToString tu crée le getteur getName() qui renvoit name

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 115
    Par défaut
    Ok admetons que tu veux pas utiliser de arraylists ce qui est quand meme la meilleur solution pour stocké des objects dans un tableau ^^

    Je pense que tu fais une erreur quand tu dis ça
    Citation Envoyé par cadoudal56 Voir le message
    Donc comment fait t-on pour remplir un string[] dans une boucle tel que montré plus haut dans mon code ?
    Comme te l'as fait remarquer Viish a aucun moment tu veux un tableau de String[], toi tu veux (d'apres ton code) un tableau de Booking2.
    Aussi pour passer d'un arraylist a un tableau tu fais

    et si ton monArrayLit était un ArrayList<String> alors tu obtiens un String[]

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

Discussions similaires

  1. [Débutant] Alimenter une liste de String à partir d'une CheckedListBox
    Par crazyman8 dans le forum C#
    Réponses: 3
    Dernier message: 15/02/2012, 10h53
  2. Alimenter une image byte[] à partir d'un String
    Par SheikYerbouti dans le forum AWT/Swing
    Réponses: 18
    Dernier message: 31/10/2006, 07h54
  3. [Débutant][JSP] Ajout des caractères à une String...
    Par Henkyl dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 04/03/2004, 16h30
  4. [Syntaxe] mettre des ' dans une string ?
    Par souch dans le forum Débuter
    Réponses: 4
    Dernier message: 14/08/2003, 16h26
  5. Réponses: 6
    Dernier message: 24/07/2003, 12h39

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