2013-09-23 2 views
1

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.

+0

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

Répondre

2

essayer comme ça

mCursor = myDataBase.query(DB_TABLE, new String[] { 
       KEY_ID, KEY_FNAME, KEY_LNAME, KEY_DIAGNOSIS, KEY_LASTFFUP }, 
     null, null, null, null, KEY_LNAME + " ASC"); 

Plus de détails Here

+0

Bonjour, j'ai essayé mais ça n'a pas fonctionné pour moi. – Dunkey

+0

faire un espace comme ça, puis essayez KEY_LNAME + "" + "ASC" –

+0

J'ai ajouté de l'espace mais c'est toujours pareil? – Dunkey

0

Essayez ceci:

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); 

Hope it helps !!

+0

cela ne fonctionne pas pour moi :( – Dunkey

+0

quel est le problème exact avez-vous ?? –

+0

quand je choisis à partir du spinner il ne triait pas – Dunkey

Questions connexes