J'essaie de trier mes éléments listview de sqlite db.trier les éléments listview de sqlite android
C'est ce que je l'ai essayé jusqu'à présent:
final String[] categories = {
"Firstname", "Lastname", "Last check up"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewallpatients);
ArrayAdapter<String> adapter = new ArrayAdapter<String>
(this,android.R.layout.simple_spinner_item, categories);
spinner = (Spinner) findViewById (R.id.spCategory);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> parent, View v, int position,
long id) {
// TODO Auto-generated method stub
final String f = parent.getItemAtPosition(position).toString();
switch(position){
case 0:
ca.setFilterQueryProvider(new FilterQueryProvider() {
public Cursor runQuery(CharSequence constraint) {
return dbHelper.sortByFirstname(f);
}
});
break;
case 1:
ca.setFilterQueryProvider(new FilterQueryProvider() {
public Cursor runQuery(CharSequence constraint) {
return dbHelper.sortByLastname(f);
}
});
break;
case 2:
ca.setFilterQueryProvider(new FilterQueryProvider() {
public Cursor runQuery(CharSequence constraint) {
return dbHelper.fetchPatientsByName(constraint.toString());
}
});
break;
}
}
DBHelper.class
public Cursor sortByFirstname(CharSequence inputText) throws SQLException {
Cursor mCursor = null;
if (inputText == null || inputText.length() == 0) {
mCursor = myDataBase.query(DB_TABLE, new String[] {
KEY_ID, KEY_FNAME, KEY_LNAME, KEY_DIAGNOSIS, KEY_LASTFFUP },
null, null, null, null, null);
}
else {
mCursor = myDataBase.query(true, DB_TABLE, new String[] {
KEY_ID, KEY_FNAME, KEY_LNAME, KEY_DIAGNOSIS, KEY_LASTFFUP },
KEY_FNAME + " like '%" + inputText + "%'", null,
null, null, "FirstName asc", null);
}
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
public Cursor sortByLastname(CharSequence inputText) throws SQLException {
Cursor mCursor = null;
if (inputText == null || inputText.length() == 0) {
mCursor = myDataBase.query(DB_TABLE, new String[] {
KEY_ID, KEY_FNAME, KEY_LNAME, KEY_DIAGNOSIS, KEY_LASTFFUP },
null, null, null, null, null);
}
else {
mCursor = myDataBase.query(true, DB_TABLE, new String[] {
KEY_ID, KEY_FNAME, KEY_LNAME, KEY_DIAGNOSIS, KEY_LASTFFUP },
KEY_FNAME + " like '%" + inputText + "%'", null,
null, null, "LastName asc", null);
}
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
Fondamentalement, un utilisateur peut trier la liste en choisissant dans la spinner par nom, prénom ou dernier contrôle. J'ai essayé de faire le code ci-dessus en vain. Je ne sais pas quel est le problème avec le code? Ou ai-je manqué quelque chose? Des idées les gars? L'aide est très appréciée. Merci.
Que diriez-vous d'exécuter la requête directement? "SELECT" + ID_clé + "," + KEY_FNAME + "," + KEY_LNAME + "," + KEY_DIAGNOSIS + "," + KEY_LASTFFUP + "FROM" + DB_TABLE + "O WH" + KEY_FNAME + "LIKE '%" + inputText + "% 'ORDER BY" + KEY_FNAME ";" – SKT