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 :

developpement android eclipse


Sujet :

Android

  1. #1
    Membre du Club
    Femme Profil pro
    M1 MIAGE
    Inscrit en
    Janvier 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : M1 MIAGE

    Informations forums :
    Inscription : Janvier 2013
    Messages : 61
    Points : 48
    Points
    48
    Par défaut developpement android eclipse
    Bonjour,

    J'aimerais afficher dans une vue, 2 colonnes : une colonne "date", et une colonne "formations".
    Ces données sont récupérées grâce à une requête.

    Mon problème : je ne sais pas s'il faut que j'utilise une liste, ou un tableau, je n'arrive pas non plus à afficher mon tableau ou ma liste (j'ai essayé avec les 2).

    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
    
        //Création d'un tableau à 2 colonnes
        private String[][] lesFormations = {};
        @Override
        protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_display_message_formations_proposees);
         final DataBaseHelper myDbHelper = new DataBaseHelper(this);
                //Tests sur la création et l'ouverture de la base de données
                try
             {
                 myDbHelper.createDataBase();
                 Log.i("test", "createDataBase" );
             } catch (IOException ioe){
                 throw new Error("Unable to create database" );
             }
             try
             {
                 myDbHelper.openDataBase();
                 Log.i("test", "openDataBase" );
             } catch(SQLException sqle){
                 throw sqle;
             }
           
           
             SQLiteDatabase db  = myDbHelper.getReadableDatabase();
           
             //Récupération de la liste créée dans la vue
         //ListView listeFormations = (ListView) findViewById(R.id.lvFormationsProposees);
         
         //Exécution de la requête récupérant la description et la date de chaque formation dans la table Formations de la base de données
         String reqVerif = "select description, date from Formations;";
           
         Cursor resultat = db.rawQuery(reqVerif, null);
         //On crée 2 integers : nbResultats qui prend pour valeur le nombre d'occurrences renvoyés par la requête et i, un compteur
         int nbResultats = resultat.getCount()-1;
         int i;
         Log.i("test", String.valueOf(nbResultats));
         //On se place au niveau de la première occurrence
         resultat.moveToFirst();
         //On fait une boucle For : pour i allant de 0 à nbResultats, on ajoute les occurrences retournées par la requête au tableau
         for (i=0; i<=nbResultats; i++)
         {
                         Log.i("test", String.valueOf(i));
                         Log.i("test", resultat.getString(0));
                         Log.i("test", resultat.getString(1));
                         lesFormations[i][0] = resultat.getString(0);
                         lesFormations[i][1] = resultat.getString(1);
                         resultat.moveToNext();
         }
         //listeFormations.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, lesFormations));
         System.out.println(lesFormations);
        }

    Les commentaires en rouge représentent ce que j'ai essayé avec les listes (à la place du system.out.println(lesFormations) )

    ça me met un force to close avec la liste, et un écran noir avec le tableau...

    Merci !

  2. #2
    Expert éminent

    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
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    A mon avis le force close arrive aussi avec le System.out
    Un joli IndexOutOfBoundException à priori

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private String[][] lesFormations = {};
    Initialise un tableau de dimension 0 x 0

    Ensuite dans le code, on fait appel à "lesFormations[i][0]" qui enverra donc systématiquement une exception puisque le tableau n'a aucune ligne / colonne...

    Par la suite le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, lesFormations)
    ne devrait même pas compiler, puisque lesFormations doit être une liste de String (ArrayAdapter<String>), ou un tableau de String...
    Ce qui n'est pas le cas, puisque c'est un tableau de tableaux de String.


    1. JAVA est un langage fortement typé... l'utiliser:
    Code java : 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
    class Formation
    {
         String description;
         String date;
     
         public Formation(String desc, String dt)
         {
              this.description = desc;
              this.date = dt;
         }
     
         public String getDescription() { return this.description; }
         public String getDate() { return this.date; }
     
         /* c'est cette fonction qui sera utilisée par les SimpleAdapter tels que ArrayAdapter */
         public String toString() { return this.description; }
    }

    Ensuite dans le code de l'activité:
    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
     
    private ArrayList<Formation>   lesFormations;
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display_message_formations_proposees);
         final DataBaseHelper myDbHelper = new DataBaseHelper(this);
                //Tests sur la création et l'ouverture de la base de données
                try
             {
                 myDbHelper.createDataBase();
                 Log.i("test", "createDataBase" );
             } catch (IOException ioe){
                 throw new Error("Unable to create database" );
             }
             try
             {
                 myDbHelper.openDataBase();
                 Log.i("test", "openDataBase" );
             } catch(SQLException sqle){
                 throw sqle;
             }
     
     
             SQLiteDatabase db  = myDbHelper.getReadableDatabase();
     
             //Récupération de la liste créée dans la vue
         //ListView listeFormations = (ListView) findViewById(R.id.lvFormationsProposees);
     
         //Exécution de la requête récupérant la description et la date de chaque formation dans la table Formations de la base de données
         String reqVerif = "select description, date from Formations;";
     
         lesFormations = new ArrayList<Formation>();
         Cursor resultat = db.rawQuery(reqVerif, null);
         boolean hasFormation = resultat.moveToFirst();
         while (hasFormation) {
            Formation formation = new Formation(resultats.getString(0),resultats.getString(1));
            lesFormations.add(formation);
            hasFormation = resultat.moveToNext();
         }
     
         listeFormations.setAdapter(new ArrayAdapter<Formation>(this, android.R.layout.simple_list_item_single_choice, lesFormations));
        }
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

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

Discussions similaires

  1. developpement Android eclipse
    Par aba.com dans le forum Android
    Réponses: 3
    Dernier message: 21/10/2010, 17h30
  2. Developper sous Eclipse windows pour Linux(ARM)
    Par anny0 dans le forum Eclipse
    Réponses: 1
    Dernier message: 25/03/2008, 13h17
  3. Réponses: 7
    Dernier message: 23/03/2007, 16h23
  4. developpement sous eclipse
    Par redamimo dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/08/2006, 11h01

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