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 :

Créer dynamiquement des boutons


Sujet :

Composants graphiques Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 20
    Points : 9
    Points
    9
    Par défaut Créer dynamiquement des boutons
    Bonjour,

    J'ai une application pour tablettes android à faire, et pour celà j'ai besoin de lire des fichiers HTML dans une webView. Seulement le problème c'est que j'ai besoin de beaucoup de fichier HTML (80-100) et qu'il faudrait créer des boutons dynamiquement en fonction des fichier HTML trouvé. Quelqu'un aurait une idée de comment je pourrais faire ça?

    Merci d'avance à tout ceux qui m'aideront!

  2. #2
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Tu peux très bien créer des boutons ou tous autres contrôles avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Button btn  = new Button(...)
    Si la réponse vous a aidé, pensez à cliquer sur +1

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Je sais comment créer des boutons, mais ce que je veux c'est qu'ils se créer en regardant quels sont les fichiers HTML il y a. Comme ça, avec un logiciel de mise a jour, on pourras créer de nouveau bouton juste en ajoutant un fichier HTML.

    Si par exemple, il voit un bouton "Présentation.html", il créer un bouton qui s'appelle "Présentation" et quand on clique dessus ça charge le fichier dans la webView

  4. #4
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Et d'où proviennent tes fichiers html?

    Tu as besoin d'une sorte de listener/notification/receiver qui est à l'écoute et lorsque quelque-chose arrive (un événement, une page arrive...), il fait un traitement.
    Si la réponse vous a aidé, pensez à cliquer sur +1

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Edit : Mes fichier HTML sont créé localement, ils sont dans le dossier assets. Plus tard je verrais pour faire la mise à jour depuis un logiciel d'administration, mais pour l'instant mes fichier HTML sont créer en local.

    En fait mon application présente mon IUT. Pour chaque formations il y a des boutons pour la présentation, la poursuite d'étude,... Chaque bouton change le fichier HTML lu dans la webView. J'aimerais pouvoir créez ces boutons en fonction des fichier HTML. L'un des problème c'est qu'il faut mettre les fichier HTML dans le même dossier, je ne peut pas lire de fichier dans assets/unDossier ou alors je ne sais pas comment faire.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    J'utilise cette méthode pour lire mes fichiers HTML :

    Je les range dans un tableau pour commencer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    final String[] tab = new String[9];
            tab[0] = "file:///android_asset/info/dutinformatique_presentation2.html";
            tab[1] = "file:///android_asset/DutInformatique_Conditions.html";
            tab[2] = "file:///android_asset/DutInformatique_Objectifs.html";
            tab[3] = "file:///android_asset/DutInformatique_Enseignement.html";
            tab[4] = "file:///android_asset/DutInformatique_Poursuite.html";
            tab[5] = "file:///android_asset/DutInformatique_Metiers.html";
            tab[6] = "file:///android_asset/DutInformatique_Chiffres.html";
            tab[7] = "file:///android_asset/DutInformatique_Contact.html";
            tab[8] = "file:///android_asset/DutInformatique_Inscription.html";
    Ensuite j'initialise la webView :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    web = (WebView) findViewById(R.id.webView);
     
    web.clearCache(true);
            web.setWebViewClient(new WebViewClient());
            web.getSettings();
            web.loadUrl(tab[0]);
    puis dans les écouteur, je modifie le fichier chargé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    final Button presButton = (Button) findViewById(R.id.info_pres);
     
    presButton.setOnClickListener(new View.OnClickListener() { 
                public void onClick(View v) {
                    web.loadUrl(tab[0]);
                    scroll.scrollTo(0, 0);
                    pos = 0;
                }
              });
    Le "pos" c'est un attribut qui me sert a savoir quel fichier j'ai chargé en dernier.

  7. #7
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Ne travaille pas avec un tableau fixe si ça devient dynamique.

    Utilise un ArrayList (comme dans un topic d'aujourd'hui)

    Rem: on peut lire les fichiers un peu partout sur sdcard.
    Donc tu pourrais très bien avoir une arborescence de fichiers html si tu le désires.

    Pour avoir ta liste de boutons, comme tu vas employer un ArrayList
    tu peux très bien créer une listview (y afficher un bouton par élément de ton arraylist) et le tour est jouer.

    Suffit d'afficher cette listView "à la demande" (refresh) de l'utilisateur et tu n'auras pas besoin de listener...
    Si la réponse vous a aidé, pensez à cliquer sur +1

  8. #8
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Tu devrais utiliser une hashmap stockant un intitulé du bouton et le chemin vers le fichiers html. Ensuite tu itères sur cette hashMap et tu créés chaque bouton (new Button()) dynamiquement.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Merci pour vos réponses! J'ai un problème quand je veux faire une listFile, apparamment, le chemin n'est pas bon. Voici ce que 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
    File file = new File("file:///android_asset/");
    	    FilenameFilter dew = new FilenameFilter() {
    	        public boolean accept(File file, String name) {
    	          return name.endsWith(".html");
    	        }
    	      };
     
     
    	    File[] fileList = file.listFiles(dew);
     
    	    for (int i = 0; i < fileList.length; i++) {
    	    	array.add(fileList[i].getName());
    	    }
    Il me fais une NullPointerException quand j'utilise fileList.length, surement par-ce que ma listFile n'est pas créer à cause du chemin d'accès. Vous avez une idée de pourquoi ça ne marche pas?

  10. #10
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Ce n'est pas fileList.size()?
    Si la réponse vous a aidé, pensez à cliquer sur +1

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Non c'est bien .length. Ce code marchait très bien en java quand je l'ai créé, il n'y a que le chemin d'accès qui change. C'est pour ça que je pense qu'il s'agit du mauvais chemin d'accès, mais je sais vraiment pas pourquoi, j'ai à peu près tout essayé...

  12. #12
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Je me rappelle avoir fait quelque-chose comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    FileInputStream fis;
    fis = openFileInput("test.txt");
    StringBuffer fileContent = new StringBuffer("");
     
    byte[] buffer = new byte[1024];
    int length;
    while ((length = fis.read(buffer)) != -1) {
        fileContent.append(new String(buffer));
    }
    Utilise FileInputStream.
    Si la réponse vous a aidé, pensez à cliquer sur +1

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Il ne me semble pas que ça va faire ce dont j'ai besoin...J'ai lu qu'il y avais sinon le AssetManager, mais j'arrive pas non plus à le faire marcher, pourtant c'est utiliser par plein de mon apparemment... Il y a même une méthode list qui ferais ce dont j'ai besoin. Tu sais comment utiliser l'AssetManager?

  14. #14
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Il faut que je regarde sur mon portable (je ne l'ai pas avec)...
    Si la réponse vous a aidé, pensez à cliquer sur +1

Discussions similaires

  1. Créer dynamiquement des boutons à bascule
    Par Zuthos dans le forum IHM
    Réponses: 2
    Dernier message: 02/08/2012, 15h11
  2. MFC : comment créer dynamiquement des boutons?
    Par olator dans le forum Mobiles
    Réponses: 0
    Dernier message: 23/10/2008, 19h05
  3. Réponses: 1
    Dernier message: 17/04/2007, 14h43
  4. [D5] Créer dynamiquement des variables dans une fonction
    Par MelkInarian dans le forum Delphi
    Réponses: 11
    Dernier message: 14/04/2007, 12h16
  5. Réponses: 2
    Dernier message: 31/08/2002, 14h00

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