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:
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:
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:
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;
}
} |