Я работаю над приложением TV Guide, которое использует ListActivity
, показывающее телешоу для одного канала/один день за раз. Я использую RelativeLayout
для ListView
элементов, и я хочу ListView
выглядеть примерно так:Изменение данных SimpleCursorAdapter
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
?
Спасибо, что объясняет это очень хорошо. Я переработал ваш пример, чтобы соответствовать моему коду, и он отлично работает для меня. – Squonk
Это только что спасло мою задницу, пытаясь переупорядочить количество строк из курсора, так что спасибо вам, сэр. Мой код выглядит следующим образом: HistoryAdapter.setViewBinder (новый SimpleCursorAdapter.ViewBinder() { \t \t \t @Override \t \t \t общественного логический setViewValue (Просмотр вид, Cursor курсор, внутр столбец) { \t \t \t \t если (столбец == 0) {// давайте предположим, что столбец 0 является \t \t \t \t \t \t \t \t \t // дата \t \t \t \t \t TextView tv = (TextView) view; \t \t \t \t \t String rownum = String.valueOf (cursor.getPosition() + 1); \t \t \t \t \t // здесь использовать SimpleDateFormat для бла-бла-бла \t \t \t \t \t телевизор.SetText (ROWNUM); \t \t \t \t \t return true; \t \t \t \t} \t \t \t \t возвращение ложным; \t \t \t} \t \t}); –
@Cristian. Как вы думаете, вы могли бы помочь с этим http://stackoverflow.com/questions/27257416/android-how-can-i-pass-data-related-to-two-tables-to-a-the -insert-метод в своем? – eddy