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 :

Récupérer valeur random SQLite dans TextView


Sujet :

Composants graphiques Android

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Points : 51
    Points
    51
    Par défaut Récupérer valeur random SQLite dans TextView
    Bonjour à tous,

    Dans le cadre d'une petite application "quizz", j'ai fait d'un côté une BDD (SQLite) et d'un autre côté je souhaite avoir la partie quizz.
    Pour la partie BDD, pas de souci, je peux rentrer mes valeurs, elles s'ajoutent bien à la base.

    Là où je bloque c'est pour générer la partie quizz, je n'arrive pas appeler en random une valeur dans un TextView, sa valeur correspondante et deux autres valeurs random (cf croquis ci-dessous).

    Schéma de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    |ID|mot1|mot2|
    |01|foo |bar |
    |02|foo2|bar2|
    |03|foo3|bar3|
    Ce que j'aimerais en sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Textview 1 : foo
    Button 1 : bar2
    Button 2 : bar
    Button 3 : bar3
    J'ai cherché sur le net, mais je ne trouve pas de docs explicites.

    Merci par avance si l'un de vous a des pistes.

  2. #2
    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
    Un "ORDER BY RAND()" au niveau de la requête SQL devrait régler ton problème, sans avoir rien à faire coté Android.
    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

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Points : 51
    Points
    51
    Par défaut
    Bonjour,
    Tout d'abord, Merci Hephaistos007 pour ta réponse.

    Ça fait quelques jours que je tourne en rond autour de mon problème (qui, je suis sur est simple et basique à résoudre)...

    En gros, je n'arrive pas à importer une valeur de ma base dans un TextView, j'arrive à importer toute la base dans une ListView, mais je ne capte pas comment faire pour une valeur dans un TextView.

    Si quelqu’un avait une bonne piste pour que je comprenne comment faire.

    Merci par avance.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Points : 51
    Points
    51
    Par défaut
    Après une mise en attente de mon projet, je me replonge dedans depuis quelques jours. Malheureusement, je n'arrive toujours pas à faire quoi que ce soit avec ma BDD.

    Pour résumer mon application, sur une activité, l'utilisateur rentre des valeurs, elles sont injectées dans la BDD, en-dessous une ListView qui affiche le contenu de la BDD. Dans une autre activité, un quiz généré suivant la BDD.

    Pour le moment (en partant du tutoriel suivant : http://blog.ace-dev.fr/2011/10/08/tu...se-de-donnees/), j'ai fait la première activité qui fonctionne parfaitement.

    Pour la seconde partie, je suis bloqué.

    J'aimerais dans un premier temps réussir à afficher une valeur de la BDD dans un TextView (ensuite je passerai sur la question du random). La seule chose que j'ai réussi à faire est d'obtenir dans mon TextView le texte suivant :
    gisclace.quizz.adapter.CourseAdapter@42182238
    (je pense que cela vient de mon adapter, mais débutant sur les bdd je me noie complètement).

    Voici mes codes :
    CourseOpenHelper.java:
    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
    package gisclace.quizz.adapter.business;
     
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;
     
    public class CourseOpenHelper extends SQLiteOpenHelper {
     
        // Version de la base de donn�es
        private static final int DATABASE_VERSION = 1;
     
        // Nom de la base
        private static final String COURSE_BASE_NAME = "course.db";
     
        // Nom de la table
        public static final String COURSE_TABLE_NAME = "Course";
     
        // Description des colonnes
        public static final String COLUMN_ID = "ID";
        public static final int NUM_COLUMN_ID = 0;
        public static final String COLUMN_PRODUIT = "PRODUIT";
        public static final int NUM_COLUMN_PRODUIT = 1;
        public static final String COLUMN_QUANTITE = "QUANTITE";
        public static final int NUM_COLUMN_QUANTITE = 2;
        public static final String COLUMN_ACHETE = "ACHETE";
        public static final int NUM_COLUMN_ACHETE = 3;
     
        // Requ�te SQL pour la cr�ation da la base
        private static final String REQUETE_CREATION_BDD = "CREATE TABLE "
                + COURSE_TABLE_NAME + " (" + COLUMN_ID
                + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_PRODUIT
                + " TEXT NOT NULL, " + COLUMN_QUANTITE + " TEXT NOT NULL, "
                + COLUMN_ACHETE + " INTEGER NOT NULL);";
     
     
        /**
         * Constructeur
         * 
         * @param context
         * @param name
         * @param factory
         * @param version
         */
        public CourseOpenHelper(Context context, CursorFactory factory) {
            super(context, COURSE_BASE_NAME, factory, DATABASE_VERSION);
        }
     
        /**
         * Cr�ation de la base
         */
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(REQUETE_CREATION_BDD);
        }
     
        /**
         * Mise � jour de la base
         */
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // Lorsque l'on change le num�ro de version de la base on supprime la
            // table puis on la recr�e
            if (newVersion > DATABASE_VERSION) {
                db.execSQL("DROP TABLE " + COURSE_TABLE_NAME + ";");
                onCreate(db);
            }
        }
     
    }
    CourseRepository.java :
    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
    package gisclace.quizz.adapter.business;
     
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
     
    import gisclace.quizz.adapter.Course;
     
    import java.util.ArrayList;
    import java.util.List;
     
    public class CourseRepository extends Repository<Course> {
     
        public CourseRepository(Context context) {
            sqLiteOpenHelper = new CourseOpenHelper(context, null);
        }
     
        /**
         * Suppression d'un produit
         * 
         * @param id
         */
        public void DeleteProduit(int id) {
            maBDD.delete(CourseOpenHelper.COURSE_TABLE_NAME,
                    CourseOpenHelper.COLUMN_ID + "=?",
                    new String[] { String.valueOf(id) });
        }
     
        /**
         * R�cup�ration de la liste de tous les produits
         */
        @Override
        public List<Course> GetAll() {
            // R�cup�ration de la liste des courses
            Cursor cursor = maBDD.query(CourseOpenHelper.COURSE_TABLE_NAME,
                    new String[] { CourseOpenHelper.COLUMN_ID,
                            CourseOpenHelper.COLUMN_PRODUIT,
                            CourseOpenHelper.COLUMN_QUANTITE,
                            CourseOpenHelper.COLUMN_ACHETE
                    }, null, null, null,
                    null, null);
     
            return ConvertCursorToListObject(cursor);
        }
     
        /**
         * Retourne un seul produit
         */
        @Override
        public Course GetById(int id) {
            Cursor cursor = maBDD.query(CourseOpenHelper.COURSE_TABLE_NAME,
                    new String[] { CourseOpenHelper.COLUMN_ID,
                            CourseOpenHelper.COLUMN_PRODUIT,
                            CourseOpenHelper.COLUMN_QUANTITE,
                            CourseOpenHelper.COLUMN_ACHETE
                    },
                    CourseOpenHelper.COLUMN_ID + "=?",
                    new String[] { String.valueOf(id) }, null, null, null);
     
            return ConvertCursorToObject(cursor);
        }
     
        /**
         * Enregistre en produit dans la base
         */
        @Override
        public void Save(Course entite) {
            ContentValues contentValues = new ContentValues();
            contentValues.put(CourseOpenHelper.COLUMN_PRODUIT, entite.getProduit());
            contentValues.put(CourseOpenHelper.COLUMN_QUANTITE,
                    entite.getQuantite());
            contentValues.put(CourseOpenHelper.COLUMN_ACHETE, entite.isAchete());
     
            maBDD.insert(CourseOpenHelper.COURSE_TABLE_NAME, null, contentValues);
        }
     
        /**
         * Met � jour un produit
         */
        @Override
        public void Update(Course entite) {
            ContentValues contentValues = new ContentValues();
            contentValues.put(CourseOpenHelper.COLUMN_PRODUIT, entite.getProduit());
            contentValues.put(CourseOpenHelper.COLUMN_QUANTITE,
                    entite.getQuantite());
            contentValues.put(CourseOpenHelper.COLUMN_ACHETE, entite.isAchete());
     
            maBDD.update(CourseOpenHelper.COURSE_TABLE_NAME, contentValues,
                    CourseOpenHelper.COLUMN_ID + "=?",
                    new String[] { String.valueOf(entite.getId()) });
        }
     
        /**
         * Supprime un produit
         */
        @Override
        public void Delete(int id) {
            maBDD.delete(CourseOpenHelper.COURSE_TABLE_NAME,
                    CourseOpenHelper.COLUMN_ID + "=?",
                    new String[] { String.valueOf(id) });
        }
     
        /**
         * Converti un curseur en une liste de produits
         */
        @Override
        public List<Course> ConvertCursorToListObject(Cursor c) {
            List<Course> liste = new ArrayList<Course>();
     
            // Si la liste est vide
            if (c.getCount() == 0)
                return liste;
     
            // position sur le premeir item
            c.moveToFirst();
     
            // Pour chaque item
            do {
     
                Course course = ConvertCursorToObject(c);
     
                liste.add(course);
            } while (c.moveToNext());
     
            // Fermeture du curseur
            c.close();
     
            return liste;
        }
     
        /**
         * M�thode utilis�e par ConvertCursorToObject et ConvertCursorToListObject
         */
        @Override
        public Course ConvertCursorToObject(Cursor c) {
     
            Course course = new Course(
                    c.getString(CourseOpenHelper.NUM_COLUMN_PRODUIT),
                    c.getString(CourseOpenHelper.NUM_COLUMN_QUANTITE));
            course.setId(c.getInt(CourseOpenHelper.NUM_COLUMN_ID));
            course.setAchete((c.getInt(CourseOpenHelper.NUM_COLUMN_ACHETE) != 0));
     
            return course;
        }
     
        /**
         * Converti un curseur en un produit
         */
        @Override
        public Course ConvertCursorToOneObject(Cursor c) {
            c.moveToFirst();
     
            Course course = ConvertCursorToObject(c);
     
            c.close();
            return course;
        }
    }
    Course.java :
    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
    package gisclace.quizz.adapter;
     
    public class Course {
     
        private int id;
        private String produit;
        private String quantite;
        private boolean achete;
     
        public Course(String produit, String quantite) {
            this.produit = produit;
            this.quantite = quantite;
            this.achete = false;
        }
     
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getProduit() {
            return produit;
        }
        public void setProduit(String produit) {
            this.produit = produit;
        }
        public String getQuantite() {
            return quantite;
        }
        public void setQuantite(String quantite) {
            this.quantite = quantite;
        }
        public boolean isAchete() {
            return achete;
        }
        public void setAchete(boolean achete) {
            this.achete = achete;
        }
     
     
    }
    CourseAdapter.java :
    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
    package gisclace.quizz.adapter;
     
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.CheckBox;
    import android.widget.CompoundButton;
    import android.widget.CompoundButton.OnCheckedChangeListener;
    import android.widget.TextView;
     
    import gisclace.quizz.Menu1;
    import gisclace.quizz.R;
     
    import java.util.List;
     
    public class CourseAdapter extends BaseAdapter {
     
        private List<Course> listeCourse;
        private LayoutInflater inflater;
        private Context context;
     
        public void setCourses(List<Course> listeCourse) {
            this.listeCourse = listeCourse;
        }
     
        public CourseAdapter(Context context, List<Course> listeCourse) {
            this.listeCourse = listeCourse;
            this.context = context;
            this.inflater = LayoutInflater.from(context);
        }
     
        @Override
        public int getCount() {
            return listeCourse.size();
        }
     
        @Override
        public Object getItem(int position) {
            return listeCourse.get(position);
        }
     
        @Override
        public long getItemId(int position) {
            return listeCourse.get(position).getId();
        }
     
        @Override
        public View getView(final int position, View view, ViewGroup viewGroup) {
            final ViewHolder holder;
     
            if (view == null) {
                holder = new ViewHolder();
                view = inflater.inflate(R.layout.layout_item, null);
     
                holder.tvQuantite = (TextView) view
                        .findViewById(R.id.textViewQuantite);
                holder.tvProduit = (TextView) view
                        .findViewById(R.id.textViewProduit);
                holder.cbAchete = (CheckBox) view.findViewById(R.id.checkBoxAchete);
     
                view.setTag(holder);
            } else {
                holder = (ViewHolder) view.getTag();
            }
     
            holder.tvQuantite.setText(listeCourse.get(position).getQuantite() + "");
            holder.tvProduit.setText(listeCourse.get(position).getProduit());
            holder.cbAchete.setChecked(listeCourse.get(position).isAchete());
     
            // Clic sur la check box
            holder.cbAchete
                    .setOnCheckedChangeListener(new OnCheckedChangeListener() {
                        @Override
                        public void onCheckedChanged(CompoundButton buttonView,
                                boolean isChecked) {
                            Course course = listeCourse.get(position);
     
                            course.setAchete(isChecked);
     
                            ((Menu1)context).UpdateChecked(course);
                        }
                    });
     
            return view;
        }
     
        private class ViewHolder {
            public TextView tvQuantite;
            public TextView tvProduit;
            public CheckBox cbAchete;
        }
     
    }
    Menu1.java (la partie où l'on affiche la listeview et où l'on ajoute des mots) :
    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
    package gisclace.quizz;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.app.Dialog;
    import android.view.ContextMenu;
    import android.view.ContextMenu.ContextMenuInfo;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.AdapterView.AdapterContextMenuInfo;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ListView;
     
    import gisclace.quizz.adapter.Course;
    import gisclace.quizz.adapter.CourseAdapter;
    import gisclace.quizz.adapter.business.CourseRepository;
     
    public class Menu1 extends Activity {
        private ListView listeViewCourse;
        private Button boutonAjouter;
        private CourseAdapter adapter;
        private CourseRepository courseRepository;
     
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.page1);
     
            // Bouton
            boutonAjouter = (Button) findViewById(R.id.buttonAjouter);
     
            boutonAjouter.setOnClickListener(new OnClickListener() {
     
                @Override
                public void onClick(View v) {
                    AjouterItem();
                }
            });
     
            // Listview
            listeViewCourse = (ListView) findViewById(R.id.listViewCourse);
            courseRepository = new CourseRepository(this);
     
            courseRepository.Open();
            adapter = new CourseAdapter(this, courseRepository.GetAll());
            courseRepository.Close();
     
            listeViewCourse.setAdapter(adapter);
     
            registerForContextMenu(listeViewCourse);
        }
     
        /**
         * Ajout d'une produit
         */
        private void AjouterItem() {
     
            // Cr�ation de la boite de dialogue
            final Dialog dialog = new Dialog(this);
     
            dialog.setContentView(R.layout.dialogadd);
            dialog.setTitle("          Ajouter un mot          ");
     
            final Button buttonAdd = (Button) dialog.findViewById(R.id.buttonAdd);
            final Button buttonCancel = (Button) dialog
                    .findViewById(R.id.buttonCancel);
     
            buttonAdd.setOnClickListener(new OnClickListener() {
     
                @Override
                public void onClick(View v) {
     
                    // Insertion du produit
                    courseRepository.Open();
     
                    String nomProduit = ((EditText) dialog
                            .findViewById(R.id.editTextProduitAdd)).getText()
                            .toString();
                    String quantiteProduit = (((EditText) dialog
                            .findViewById(R.id.editTextQuantiteAdd)).getText()
                            .toString());
     
                    courseRepository.Save(new Course(nomProduit, quantiteProduit));
                    courseRepository.Close();
     
                    UpdateAdapter();
     
                    dialog.dismiss();
                }
            });
     
            buttonCancel.setOnClickListener(new OnClickListener() {
     
                @Override
                public void onClick(View v) {
     
                    // Clic sur le bouton annuler
                    dialog.dismiss();
                }
            });
     
            dialog.show();
        }
     
        private void UpdateAdapter() {
            courseRepository.Open();
            adapter.setCourses(courseRepository.GetAll());
            courseRepository.Close();
            adapter.notifyDataSetChanged();
        }
     
        public void UpdateChecked(Course course) {
            courseRepository.Open();
            courseRepository.Update(course);
            courseRepository.Close();
        }
     
        public void DeleteItem(int id) {
            courseRepository.Open();
            courseRepository.Delete(id);
            courseRepository.Close();
        }
     
        @Override
        public void onCreateContextMenu(ContextMenu menu, View v,
                                        ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
            getMenuInflater().inflate(R.menu.menu_course, menu);
        }
     
        @Override
        public boolean onContextItemSelected(MenuItem item) {
            AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
                    .getMenuInfo();
     
            switch (item.getItemId()) {
                case R.id.itemDelete:
                    DeleteItem((int) info.id);
                    UpdateAdapter();
                    return true;
     
                default:
                    return super.onContextItemSelected(item);
            }
     
        }
     
        }

    Merci par avance à celui (ou ceux) qui saurotn me filer un coup de main.

Discussions similaires

  1. Récupérer valeur champ formulaire dans une variable
    Par majudis dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/05/2016, 09h15
  2. Réponses: 16
    Dernier message: 17/01/2010, 10h33
  3. récupérer valeur du javascript dans une variable php
    Par zoukman18 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/08/2009, 18h11
  4. Réponses: 21
    Dernier message: 22/05/2008, 17h51

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