Question

Je travaille sur une application TV Guide qui utilise une ListActivity montrant les émissions de télévision pour un canal / un jour à la fois. J'utilise un RelativeLayout pour les articles de ListView et je veux le ListView à ressembler à quelque chose comme ceci:

07:00 The Breakfast Show
      Latest news and topical reports
08:00 Tom and Jerry
      More cat and mouse capers

Je reçois les données pour les éléments de ListView en utilisant le code suivant:

Cursor cursor = db.rawQuery(SELECT blah,blah,blah);
String[] columnNames = new String[]{"start_time","title", "subtitle"};
int[] resIds = new int[]{R.id.start_time_short, R.id.title, R.id.subtitle};
adapter = new SimpleCursorAdapter(this, R.layout.guide_list_item, cursor, columnNames, resIds);

Mon problème est que le champ start_time est un datetime avec le format suivant:

2011-01-23 07:00:00

ce que je reçois est la suivante:

2011-01-23 07:00:00 The Breakfast Show
                    Latest news and topical reports
2011-01-23 08:00:00 Tom and Jerry
                    More cat and mouse capers

Ce que je voudrais faire est le format ci-dessus en utilisant SimpleDateFormat ("HH:mm") donc je ne reçois que la partie hour:minute du champ start_time.

Je l'ai trouvé l'interface SimpleCursor.ViewBinder qui donne à penser qu'il peut être ce que je veux, mais je ne peux pas comprendre comment l'utiliser. Si je ne me trompe pas à propos ViewBinder, je vous en serais reconnaissant quelques conseils à l'exemple de code sur la façon de l'utiliser. Sinon, comment puis-je obtenir d'autre changer le champ start_time pour montrer simplement le format HH:mm?

Était-ce utile?

La solution

Vous pouvez faire quelque chose comme ceci:

adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
    @Override
    public boolean setViewValue(View view, Cursor cursor, int column) {
        if( column == 0 ){ // let's suppose that the column 0 is the date
            TextView tv = (TextView) view;
            String dateStr = cursor.getString(cursor.getColumnIndex("name_of_the_date_column"));
            // here you use SimpleDateFormat to bla blah blah
            tv.setText(theFormatedDate);
            return true;
        }
        return false;
    }
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top