SimpleCursorAdapter - 在加载到ListView之前修改数据

时间:2013-10-06 19:12:46

标签: android sqlite simplecursoradapter

我有一个SimpleCursorAdapter,它从SQLite数据库填充数据。它工作正常,但“持续时间”列以毫秒为单位,我想在显示之前将其除以(持续时间/ 1000)。如果没有在DB中存储另一个持续时间(以分钟为单位)列,这可能吗?

适配器:

 adapter = new SimpleCursorAdapter(getActivity(),
 R.layout.rec_list_items,
 db.selectAllRecords(),
 new String[] { "day", "hour", "minute", "duration", "link" },
 new int[] { R.id.textView_day, R.id.textView_hour, R.id.textView_minute, R.id.textView_duration, R.id.textView_link },
 CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);

selectAllRecords:

public Cursor selectAllRecords() {
    String[] cols = new String[] {ID, DAY, HOUR, MINUTE, DURATION, LINK};
    Cursor mCursor = database.query(true, TABLE,cols,null
            , null, null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }

    return mCursor;
}

1 个答案:

答案 0 :(得分:0)

你有几个选择:

一个是创建自定义SimpleCursorAdapter并覆盖setViewText()。在您的实现中检查是否传递了相关的textview并将视图值设置为您想要的值。你必须将String转换为int(或浮点数,你需要的)来应用你的精度。

另一个是实现SimpleCursorAdapter.ViewBinder,在适配器的setViewBinder中将其设置为绑定器,并在绑定器的setViewValue中执行您的操作