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 :

Trier par odre alphabetique


Sujet :

Android

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Trier par odre alphabetique
    Salut à tous,
    Et d'abord merci à tous les participants de ce forum pour toutes les infos que l'on peut y trouver.

    Voilà mon problème...Je tente de créer un bouton TRIER (bouton 4) mais je ne comprend pas vers quelle méthode il faut que je me dirige.
    J'ai une base de données SQLite qui charge une listview par l'intermediaire d'un adapter dans mon application et des boutons ajouter, nouveau, supprimer et le fameux TRIER. Mais pour ce dernier je suis perdu.

    Pouvez vous m'aider pour arriver à trier ma liste par ordre alphabétique au niveau des point d'interrogations...

    Je ne sais pas si je suis très claire n'hésitez pas à me demander des éclaircissements

    Class qui gère mes boutons:
    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
     
    import android.app.ListActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ListView;
    import android.widget.Toast;
    import java.util.Comparator;
    import java.util.List;
     
    public class ListeLegumes extends ListActivity implements OnClickListener {
     
        // affichage
        private Button addBouton;
        private Button newBouton;
        private Button deleteBouton;
        private Button trierBouton;
        EditText editText;
        // adapter
        private ArrayAdapter<Personne> myAdapter;
        // bdd
        private PersonneDataSource datasource;
        // personneselected
        Personne personneSelected = null;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_liste_legumes);
     
            // ouverture d'une connexion avec la bdd
            datasource = new PersonneDataSource(this);
            datasource.open();
     
     
            // nos boutons
            addBouton = (Button) findViewById(R.id.button1);
            addBouton.setOnClickListener(this);
     
            newBouton = (Button) findViewById(R.id.button2);
            newBouton.setOnClickListener(this);
            newBouton.setEnabled(false);
     
            deleteBouton = (Button) findViewById(R.id.button3);
            deleteBouton.setOnClickListener(this);
            deleteBouton.setEnabled(false);
     
            trierBouton = (Button) findViewById(R.id.button4);
            trierBouton.setOnClickListener(this);
     
            // notre champ de saisie
            editText = (EditText) findViewById(R.id.editText1);
     
            // on récupère les personnes
            List<Personne> listValues = datasource.getAllPersonnes();
     
            // on créé un adapter
            myAdapter = new ArrayAdapter<Personne>(this, R.layout.row_layout,
                    R.id.listText, listValues);
     
            // assign the list adapter
            setListAdapter(myAdapter);
        }
     
        @Override
        public void onClick(View v) {
            if (v.getId() == R.id.button1) {
                if (editText.getText().length() > 0) {
                    if (personneSelected != null) {
                        // UPDATE
                        personneSelected.setNom(editText.getText().toString());
                        datasource.updatePersonne(personneSelected);
                    } else {
                        // CREATE
                        myAdapter.add(datasource.createPersonne(editText.getText()
                                .toString()));
                        editText.setText("");
                    }
                    myAdapter.notifyDataSetChanged();
                } else {
                    Toast toast = Toast.makeText(this, "Pas de nom!",
                            Toast.LENGTH_SHORT);
                    toast.show();
                }
     
            }
            if (v.getId() == R.id.button2) {
                personneSelected = null;
                editText.setText("");
                addBouton.setText("Ajouter");
            }
     
            if (v.getId() == R.id.button3) {
                if (personneSelected != null) {
                    editText.setText("");
                    addBouton.setText("Ajouter");
                    datasource.deletePersonne(personneSelected);
                    myAdapter.remove(personneSelected);
                    myAdapter.notifyDataSetChanged();
                    personneSelected = null;
                }
            }
     
            if (v.getId() == R.id.button4){
    ????
    ???
    ???
    ?
    ???
    ?
    ???
    ????
    ????
    ???
    ????
    ????
    ???
    ???
     
            }
        }
     
     
     
        @Override
        protected void onListItemClick(ListView list, View view, int position,
                                       long id) {
            super.onListItemClick(list, view, position, id);
     
            personneSelected = (Personne) getListView().getItemAtPosition(position);
     
            editText.setText(personneSelected.getNom());
     
            addBouton.setText("Modifier");
            newBouton.setEnabled(true);
            deleteBouton.setEnabled(true);
     
        }
     
        @Override
        protected void onResume() {
            datasource.open();
            super.onResume();
        }
     
        @Override
        protected void onPause() {
            datasource.close();
            super.onPause();
        }
     
    }

    Ma sqLite:
    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
     
     
    /**
     * Created by CEDRIC on 01/10/2015.
     */
     
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
     
     
     
    public class MySQLiteHelper extends SQLiteOpenHelper {
     
        public static final String TABLE_PERSONNES = "personnes";
        public static final String COLUMN_ID = "_id";
        public static final String COLUMN_NAME = "name";
        private static final String DATABASE_NAME = "personnes.db";
        private static final int DATABASE_VERSION = 2;
     
     
        // Database creation sql statement
        public String DATABASE_CREATE =
                "create table " + TABLE_PERSONNES + "("
                + COLUMN_ID + " integer primary key autoincrement, "
                + COLUMN_NAME + " text not null);";
     
        public MySQLiteHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
     
        @Override
        public void onCreate(SQLiteDatabase db) {
     
            db.execSQL(DATABASE_CREATE);
     
            ContentValues cv = new ContentValues(1);
            cv.put(COLUMN_NAME, "Salade");
            db.insert(TABLE_PERSONNES, null, cv);
     
        }
     
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS " + TABLE_PERSONNES);
            onCreate(db);
            db.query("personnes", new String[]{"name"}, null, null, null, null,
                    "name DESC", null);
        }
     
    }
    Ma class PersonneDataSource
    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
     
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.SQLException;
    import android.database.sqlite.SQLiteDatabase;
     
    import java.util.ArrayList;
    import java.util.List;
     
    public class PersonneDataSource {
     
        // Database fields
        private SQLiteDatabase database;
        private MySQLiteHelper dbHelper;
        private String[] allColumns = { MySQLiteHelper.COLUMN_ID,
                MySQLiteHelper.COLUMN_NAME };
     
        public PersonneDataSource(Context context) {
            dbHelper = new MySQLiteHelper(context);
        }
     
        public void open() throws SQLException {
            database = dbHelper.getWritableDatabase();
        }
     
        public void close() {
            dbHelper.close();
        }
     
        public Personne createPersonne(String name) {
            ContentValues values = new ContentValues();
            values.put(MySQLiteHelper.COLUMN_NAME, name);
            long insertId = database.insert(MySQLiteHelper.TABLE_PERSONNES, null,
                    values);
            Cursor cursor = database.query(MySQLiteHelper.TABLE_PERSONNES,
                    allColumns, MySQLiteHelper.COLUMN_ID + " = " + insertId, null,
                    null, null, null);
            cursor.moveToFirst();
            Personne newPersonne = cursorToPersonne(cursor);
            cursor.close();
                    return newPersonne;
        }
     
        public void updatePersonne(Personne personne){
            ContentValues values = new ContentValues();
            values.put(MySQLiteHelper.COLUMN_NAME, personne.getNom());
     
            database.update(MySQLiteHelper.TABLE_PERSONNES, values,
                    MySQLiteHelper.COLUMN_ID + " = ? ",
                    new String[]{String.valueOf(personne.getId())});
     
        }
     
        public void deletePersonne(Personne personne) {
            long id = personne.getId();
            database.delete(MySQLiteHelper.TABLE_PERSONNES,
                    MySQLiteHelper.COLUMN_ID + " = " + id, null);
        }
     
        public List<Personne> getAllPersonnes() {
            List<Personne> personnes = new ArrayList<Personne>();
     
            Cursor cursor = database.query(MySQLiteHelper.TABLE_PERSONNES,
                    allColumns, null, null, null, null, null);
     
            cursor.moveToFirst();
            while (!cursor.isAfterLast()) {
                Personne personne = cursorToPersonne(cursor);
                personnes.add(personne);
                cursor.moveToNext();
            }
            // make sure to close the cursor
            cursor.close();
            return personnes;
        }
     
        private Personne cursorToPersonne(Cursor cursor) {
            Personne personne = new Personne();
            personne.setId(cursor.getLong(0));
            personne.setNom(cursor.getString(1));
            return personne;
        }
     
    }

  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
    Je n'ai pas regardé en détail le code.... mais...

    1. Si l'adapter est à base de cursor (CursorAdapter) ce qui est recommandé pour la liste de trucs en DB (potentiellement grosse).
    * Reconstruire le cursor avec un "order by" sur la DB, repasser le cursor à l'adapter.

    2. Si l'adapter est à base de liste issue de la DB.
    * Reconstruire la liste en demandant à la DB de trier les noms.
    * Trier la liste soi-même (la fonction "Collections.sort" peut aider).

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Euhhh ... je ne comprends pas tout ...
    Je l'ai créé de cette manière. ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      // on récupère les personnes
            List<Personne> listValues = datasource.getAllPersonnes();
     
            // on créé un adapter
            myAdapter = new ArrayAdapter<Personne>(this, R.layout.row_layout,
                    R.id.listText, listValues)

  4. #4
    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 es dans le cas n°2 évoque par Nicroman. Par conséquent :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class PersonneCompare implements Comparator<Personne> {
     
        @Override
        public int compare(Personne o1, Personne o2) {
            return o1.getNom().compareTo(o2.getNom());
        }
    }

    Puis, simplement :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    List<Personne> listValues = datasource.getAllPersonnes();
    Collections.sort(listValues, new PersonneCompare());  //tri de la liste
    myAdapter = new ArrayAdapter<Personne>(this, R.layout.row_layout, R.id.listText, listValues)

  5. #5
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Ok .... merci pour vos réponses rapide ... je vais essayer ça ...

  6. #6
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Bon je n'arrive pas a me dépatouiller j'ai fais ça (voir le code ci dessous vers la fin), mais cela ne marche pas.
    Le bouton 4 TRIER ne fonctionne pas et lorsque j'ajoute une entrée dans ma liste avec le bouton 1 ma liste ne se rafraîchit plus dynamiquement. Je suis obligé de sortir et de revenir pour voir ma nouvelle entrée dans ma liste.

    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
     
    import android.app.ListActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ListView;
    import android.widget.Toast;
     
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
     
    public class ListeLegumes extends ListActivity implements OnClickListener {
     
        // affichage
        private Button addBouton;
        private Button newBouton;
        private Button deleteBouton;
        private Button trierBouton;
        EditText editText;
        // adapter
        private ArrayAdapter<Personne> myAdapter;
        // bdd
        private PersonneDataSource datasource;
        // personneselected
        Personne personneSelected = null;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_liste_legumes);
     
            // ouverture d'une connexion avec la bdd
            datasource = new PersonneDataSource(this);
            datasource.open();
     
     
            // nos boutons
            addBouton = (Button) findViewById(R.id.button1);
            addBouton.setOnClickListener(this);
     
            newBouton = (Button) findViewById(R.id.button2);
            newBouton.setOnClickListener(this);
            newBouton.setEnabled(false);
     
            deleteBouton = (Button) findViewById(R.id.button3);
            deleteBouton.setOnClickListener(this);
            deleteBouton.setEnabled(false);
     
            trierBouton = (Button) findViewById(R.id.button4);
            trierBouton.setOnClickListener(this);
     
            // notre champ de saisie
            editText = (EditText) findViewById(R.id.editText1);
     
            // on récupère les personnes
            List<Personne> listValues = datasource.getAllPersonnes();
     
            // on créé un adapter
            myAdapter = new ArrayAdapter<Personne>(this, R.layout.row_layout,
                    R.id.listText, listValues);
     
            // assign the list adapter
            setListAdapter(myAdapter);
        }
     
        @Override
        public void onClick(View v) {
            if (v.getId() == R.id.button1) {
                if (editText.getText().length() > 0) {
                    if (personneSelected != null) {
                        // UPDATE
                        personneSelected.setNom(editText.getText().toString());
                        datasource.updatePersonne(personneSelected);
                    } else {
                        // CREATE
                        myAdapter.add(datasource.createPersonne(editText.getText()
                                .toString()));
                        editText.setText("");
                    }
                    myAdapter.notifyDataSetChanged();
                } else {
                    Toast toast = Toast.makeText(this, "Pas de nom!",
                            Toast.LENGTH_SHORT);
                    toast.show();
                }
     
            }
            if (v.getId() == R.id.button2) {
                personneSelected = null;
                editText.setText("");
                addBouton.setText("Ajouter");
            }
     
            if (v.getId() == R.id.button3) {
                if (personneSelected != null) {
                    editText.setText("");
                    addBouton.setText("Ajouter");
                    datasource.deletePersonne(personneSelected);
                    myAdapter.remove(personneSelected);
                    myAdapter.notifyDataSetChanged();
                    personneSelected = null;
                }
            }
     
            if (v.getId() == R.id.button4){
                List<Personne> listValues = datasource.getAllPersonnes();
     
                class PersonneCompare implements Comparator<Personne> {
     
                    @Override
                    public int compare(Personne o1, Personne o2) {
                        return o1.getNom().compareTo(o2.getNom());
                    }
                }
                Collections.sort(listValues, new PersonneCompare());  //tri de la liste
                myAdapter = new ArrayAdapter<Personne>(this, R.layout.row_layout, R.id.listText, listValues);
                myAdapter.notifyDataSetChanged();
            }
        }
     
     
     
        @Override
        protected void onListItemClick(ListView list, View view, int position,
                                       long id) {
            super.onListItemClick(list, view, position, id);
     
            personneSelected = (Personne) getListView().getItemAtPosition(position);
     
            editText.setText(personneSelected.getNom());
     
            addBouton.setText("Modifier");
            newBouton.setEnabled(true);
            deleteBouton.setEnabled(true);
     
        }
     
        @Override
        protected void onResume() {
            datasource.open();
            super.onResume();
        }
     
        @Override
        protected void onPause() {
            datasource.close();
            super.onPause();
        }
     
    }

  7. #7
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Je me répond tous seul pour ce coup ci ... lol et encore merci pour l'aide
    J'ai réussi a faire fonctionner le bouton 4 TRIER. Mais j'ai plusieurs souci...

    1- Le bouton 4 qui fait le tri de ma liste fonctionne bizarrement. En effet il faut que je clique 2 fois sur le bouton pour qu'il me trie ma liste.
    2- Alors que mes bouton 1 (ajouter/modifié) et 3 (supprimer) fonctionne bien au démarrage de l'application ... càd que lorsque je fais ajouter, modifier ou supprimé cela ce fait en temps reel, dès que je touche au bouton 4 trié ce dernier me fige ma liste. En effet les fonction ajouter, modifier et supprimer fonctionne toujours mais la liste reste figé, et il faut que je revienne à mon écran précédant puis que je revienne sur ma liste pour que les changement ce mette a jour sur ma liste.

    Voici 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
    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
    159
    160
     
     
    import android.app.ListActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ListView;
    import android.widget.Toast;
     
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
     
    public class ListeLegumes extends ListActivity implements OnClickListener {
     
     
        private Button addBouton;
        private Button newBouton;
        private Button deleteBouton;
        private Button trierBouton;
        EditText editText;
        // adapter
        private ArrayAdapter<Personne> myAdapter;
        // bdd
        private PersonneDataSource datasource;
        // personneselected
        Personne personneSelected = null;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_liste_legumes);
     
            // ouverture d'une connexion avec la bdd
            datasource = new PersonneDataSource(this);
            datasource.open();
     
     
            // nos boutons
            addBouton = (Button) findViewById(R.id.button1);
            addBouton.setOnClickListener(this);
     
            newBouton = (Button) findViewById(R.id.button2);
            newBouton.setOnClickListener(this);
            newBouton.setEnabled(false);
     
            deleteBouton = (Button) findViewById(R.id.button3);
            deleteBouton.setOnClickListener(this);
            deleteBouton.setEnabled(false);
     
            trierBouton = (Button) findViewById(R.id.button4);
            trierBouton.setOnClickListener(this);
     
            // notre champ de saisie
            editText = (EditText) findViewById(R.id.editText1);
     
            // on récupère les personnes
            List<Personne> listValues = datasource.getAllPersonnes();
     
            // on créé un adapter
            myAdapter = new ArrayAdapter<Personne>(this, R.layout.row_layout,
                    R.id.listText, listValues);
     
            // assign the list adapter
            setListAdapter(myAdapter);
        }
     
        @Override
        public void onClick(View v) {
            if (v.getId() == R.id.button1) {
                if (editText.getText().length() > 0) {
                    if (personneSelected != null) {
                        // UPDATE
                        personneSelected.setNom(editText.getText().toString());
                        datasource.updatePersonne(personneSelected);
                        editText.setText("");
                        addBouton.setText("Ajouter");
                        myAdapter.notifyDataSetChanged();
                        personneSelected = null;
     
                    } else {
                        // CREATE
                        myAdapter.add(datasource.createPersonne(editText.getText().toString()));
                        editText.setText("");
                        myAdapter.notifyDataSetChanged();
                    }
     
                } else {
                    Toast toast = Toast.makeText(this, "Pas de nom!",
                            Toast.LENGTH_SHORT);
                    toast.show();
                }
     
            }
            if (v.getId() == R.id.button2) {
                personneSelected = null;
                editText.setText("");
                addBouton.setText("Ajouter");
            }
     
            if (v.getId() == R.id.button3 && personneSelected != null) {
     
                    editText.setText("");
                    addBouton.setText("Ajouter");
                    datasource.deletePersonne(personneSelected);
                    myAdapter.remove(personneSelected);
                    personneSelected = null;
                    myAdapter.notifyDataSetChanged();
     
                }
     
     
            if (v.getId() == R.id.button4){
                List<Personne> listValues = datasource.getAllPersonnes();
                class PersonneCompare implements Comparator<Personne> {
                    @Override
                    public int compare(Personne o1, Personne o2) {
                        return o1.getNom().compareTo(o2.getNom());
                    }
                }
                Collections.sort(listValues, new PersonneCompare());  //tri de la liste
                setListAdapter(myAdapter);
                myAdapter = new ArrayAdapter<Personne>(this, R.layout.row_layout, R.id.listText, listValues);
                myAdapter.notifyDataSetChanged();
            }
        }
     
     
     
        @Override
        protected void onListItemClick(ListView list, View view, int position,
                                       long id) {
            super.onListItemClick(list, view, position, id);
     
            personneSelected = (Personne) getListView().getItemAtPosition(position);
     
            editText.setText(personneSelected.getNom());
     
            addBouton.setText("Modifier");
            newBouton.setEnabled(true);
            deleteBouton.setEnabled(true);
     
        }
     
        @Override
        protected void onResume() {
            datasource.open();
            super.onResume();
        }
     
        @Override
        protected void onPause() {
            datasource.close();
            super.onPause();
        }
     
    }

  8. #8
    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
    Citation Envoyé par rick33290 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                setListAdapter(myAdapter);
                myAdapter = new ArrayAdapter<Personne>(this, R.layout.row_layout, R.id.listText, listValues);
                myAdapter.notifyDataSetChanged();
    Il n'y a pas un bleme là ?

    Je dis à la liste d'utiliser "myAdapter" (disons #321) myAdapter=#321, listAdapter=#321
    Puis je crée un nouveal adapter (#322) myAdapter=#322, listAdapter=#321
    A qui je dis que les données ont été modifiées (c'est inutile puisqu'il est tout neuf)
    mais rien d'autre ensuite....

    Du coup la liste affiche toujours le #321 !

    Remplacer le "notifyDataSetChanged" par le setListAdapter (et l'enlever du dessus).

    Autre chose:

    Demander la liste à la base de données *puis* trier est complètement absurde (autant demander à la base de trier à la volée en passant un paramètre à getAllPersonnes() ).
    D'autant que la liste on l'a déjà (elle est dans myAdapter). Autant trier la liste qui est dans myAdapter, *puis* dire à myAdapter que les données ont changé.

  9. #9
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci nicroman !!! maintenant cela fonctionne bien !!

    Grace à ton explication je comprend mieux pourquoi cela ne fonctionné pas... Dsl si mes erreurs t'ont piqué les yeux ..

    Bon maintenant je poursuis mon application ... plein de chose à faire encore ... j'adore ça la programmation c dommage que je sois limité ... mais je vais persévérer !!!

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

Discussions similaires

  1. trier par ordre alphabetique le contenu d'une liste deroulante DropDownList
    Par mimijesss dans le forum Développement Sharepoint
    Réponses: 3
    Dernier message: 23/05/2011, 15h29
  2. LATEX : trier les acronymes par ordre alphabetique
    Par mirabf dans le forum Mise en forme
    Réponses: 1
    Dernier message: 07/12/2009, 19h26
  3. trier par ordre alphabetique un tableau de char
    Par Pitou5464 dans le forum C
    Réponses: 3
    Dernier message: 02/11/2006, 18h44
  4. trii par odre alphabetique dans un arbre
    Par matt92700 dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 13/01/2005, 22h16

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