Изменение данных SimpleCursorAdapter
-
23-10-2019 - |
Вопрос
Я работаю над приложением для телевизионного руководства, которое использует ListActivity
Показывая телешоу для одного канала / один день за раз. Я использую RelativeLayout
для ListView
предметы и я хочу ListView
Чтобы выглядеть примерно так:
07:00 The Breakfast Show
Latest news and topical reports
08:00 Tom and Jerry
More cat and mouse capers
Я получаю данные для ListView
Элементы с использованием следующего кода:
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);
Моя проблема в том, что start_time
Поле - это datetime
со следующим форматом:
2011-01-23 07:00:00
Так что я получаю это:
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
Что я хотел бы сделать, это отформатировать выше SimpleDateFormat
("HH:mm"
), поэтому я только получаю hour:minute
часть start_time
поле.
Я нашел SimpleCursor.ViewBinder
Интерфейс, который предполагает, что это может быть то, что я хочу, но я не могу понять, как его использовать. Если я прав ViewBinder
, Я буду признателен за некоторыми указателями на выборку кода о том, как его использовать. В противном случае, как еще я могу добиться изменения start_time
Поле, чтобы просто показать HH:mm
формат?
Решение
Вы можете сделать что -то вроде этого:
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;
}
});