修改 SimpleCursorAdapter 的数据 [英] Modifying SimpleCursorAdapter's data
问题描述
我正在开发一个电视指南应用程序,该应用程序使用 ListActivity
显示一个频道/一天的电视节目.我正在为 ListView
项目使用 RelativeLayout
,我希望 ListView
看起来像这样:
I'm working on a TV Guide app which uses a ListActivity
showing the TV shows for one channel / one day at a time. I'm using a RelativeLayout
for the ListView
items and I want the ListView
to look something like this:
07:00 The Breakfast Show
Latest news and topical reports
08:00 Tom and Jerry
More cat and mouse capers
我使用以下代码获取 ListView
项的数据:
I get the data for the ListView
items using the following code:
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
:
My problem is that the start_time
field is a datetime
with the following format:
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
字段的一部分.
What I'd like to do is format the above using SimpleDateFormat
("HH:mm"
) so I only get the hour:minute
part of the start_time
field.
我发现了 SimpleCursor.ViewBinder
接口,这表明它可能是我想要的,但我不知道如何使用它.如果我对 ViewBinder
的看法是正确的,我会很感激一些关于如何使用它的示例代码的指针.否则,我还能如何将 start_time
字段更改为简单地显示 HH:mm
格式?
I've found the SimpleCursor.ViewBinder
interface which suggests it may be what I want but I can't figure out how to use it. If I'm right about ViewBinder
, I'd appreciate some pointers to sample code on how to use it. Otherwise, how else can I achieve changing the start_time
field to simply show HH:mm
format?
推荐答案
你可以这样做:
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;
}
});
这篇关于修改 SimpleCursorAdapter 的数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!