修改 SimpleCursorAdapter 的数据 [英] Modifying SimpleCursorAdapter's data

查看:18
本文介绍了修改 SimpleCursorAdapter 的数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个电视指南应用程序,该应用程序使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆