2017-05-07 3 views
0

J'ai une application où je peux créer des leçons (anglais, français, ...). Ces leçons ont un début et une fin de date. Je stocke les dates sélectionnées en tant que chaîne dans ma base de données.Trier les données de la base de données pour sélectionner la liste correcteView android

Je voudrais savoir créer une TabbedActivity avec 3 onglets (Past/Current/Futur).

Le passé contiendrait tous les cours dont la date de fin est antérieure à la date actuelle.Current contiendrait toutes les leçons où la date actuelle est entre le début et la fin des 2 dates. Et Futur contiendrait toutes les leçons où la date de début est après la date actuelle. Mais, puisque je les stocke sous forme de valeurs String, est-ce possible? Si oui, pouvez-vous m'expliquer comment?

Je peux poster du code si vous avez besoin (je ne poste pas de code maintenant parce que idk si c'est possible ce que je demande).

Merci les gars!

@update avec méthode aide

public Cursor getCoursFuture() 
{ 
    Calendar c = Calendar.getInstance(); 
    DateFormat df = new SimpleDateFormat("dd-MM-yyyy"); 
    Date date = c.getTime(); 
    String currentDate = df.format(date); 

    String query ="select ID as _id, branche_cours, designation from "+TABLE_COURS+" where date('"+COLONNE_DATEPREMIER+"') > '"+currentDate+"'"; 
    Open(); 
    Cursor cursor = db.rawQuery(query,null); 
    return cursor; 
} 

Mon SimpleCursorAdapter

lvCours =(ListView)findViewById(R.id.ListCours); 
    final Cursor cursor = dbhelper.getCoursFuture(); 
    String[] from = { "branche_cours", "designation" }; 
    int[] to = { R.id.text_branche_cours, R.id.text_designation }; 
    lvCours.setAdapter(adapter); 
    adapter = new SimpleCursorAdapter(this, R.layout.list_row, cursor, from, to, 0); 
    lvCours.setAdapter(adapter); 
    adapter.notifyDataSetChanged(); 
+0

Il suffit de stocker vos dates en tant qu'horodatage UTC. Stocker des dates en tant que chaînes ne cause que des maux de tête inutiles – Jahnold

+0

comment puis-je faire cela? – Dom

Répondre

0

Il est possible de trier par date

Disons que votre date actuelle est currentDate;

Vous pouvez trier cette requête à l'aide pour choisir des cours futurs

select * from Table where date(dateColumn) > currentDate

Remplacer > avec < et = pour d'autres requêtes.

Éditer: Lorsque vous appelez c.getTime(), vous obtenez un objet Date. Vous devez le formater en une chaîne.

Date date = c.getTime(); 
DateFormat df = new SimpleDateFormat("MM/dd/yyyy"); 
String currentDate = df.format(date); 
+0

mais ces requêtes, je les écris dans mon DatabaseHelper ou dans ce tabbedactivity? – Dom

+0

Dans l'assistant de base de données bien sûr –

+0

Et comment puis-je convertir ces String en valeurs DateTime? Pouvez-vous s'il vous plaît me montrer un exemple de la méthode pour l'un des ListView (disons le passé) = – Dom