Pracuję nad aplikacją TV Guide, która używa ListActivity
, pokazując programy telewizyjne dla jednego kanału/jednego dnia na raz. Używam RelativeLayout
dla ListView
przedmiotów i chcę ListView
wyglądać mniej więcej tak:Modyfikowanie danych SimpleCursorAdapter
07:00 The Breakfast Show
Latest news and topical reports
08:00 Tom and Jerry
More cat and mouse capers
mogę uzyskać dane dla ListView
elementów za pomocą następującego kodu:
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);
mój problem to, że pole start_time
jest datetime
z następującym formacie:
2011-01-23 07:00:00
więc co mam to:
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
Co chciałbym zrobić to sformatować powyżej używając SimpleDateFormat
("HH:mm"
), więc tylko dostać hour:minute
część pola start_time
.
Znalazłem interfejs SimpleCursor.ViewBinder
sugerujący, że może być to, czego chcę, ale nie mogę wymyślić, jak z niego korzystać. Jeśli mam rację co do numeru ViewBinder
, doceniam kilka wskazówek, które podpowiedzą, jak go użyć. W przeciwnym razie, w jaki inny sposób mogę uzyskać zmianę pola start_time
, aby wyświetlić po prostu format HH:mm
?
Dziękuję, że wyjaśnia to bardzo dobrze. Ponownie opracowałem twój przykład, aby pasował do mojego kodu i działa on idealnie dla mnie. – Squonk
To właśnie uratowało mój tyłek, próbując zmienić kolejność wierszy z kursora, więc dziękuję panu. Mój kod wygląda następująco: HistoryAdapter.setViewBinder (nowa SimpleCursorAdapter.ViewBinder() { \t \t \t @Override \t \t \t public boolean setViewValue (Widok, Kursor Kursor, int kolumna) { \t \t \t \t if (kolumna == 0) {// załóżmy że kolumna 0 jest \t \t \t \t \t \t \t \t \t // data \t \t \t \t \t Widok TextView tv = (widok tekstu); \t \t \t \t \t String rownum = String.valueOf (cursor.getPosition() + 1); \t \t \t \t \t // tu użyć SimpleDateFormat do bla bla bla \t \t \t \t \t tv.setText (rownum); \t \t \t \t \t return true; \t \t \t \t} \t \t \t \t powrotu fałszywe; \t \t \t} \t \t}); –
@Cristian Proszę, myślisz, że możesz pomóc w tym http://stackoverflow.com/questions/27257416/android-how-can-i-pass-data-related-to-two-tables-to-a-hehe -insert-method-of-a? – eddy