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

Android SimpleCursorAdapter-在加载到ListView之前修改数据,android,sqlite,simplecursoradapter,Android,Sqlite,Simplecursoradapter,我有一个SimpleCursorAdapter,它填充来自SQLite数据库的数据。它工作正常,但是“duration”列是以毫秒为单位的,我想在显示之前将其除以(duration/1000)。如果不在DB中存储另一个持续时间(以分钟为单位)列,这是可能的吗 适配器: adapter = new SimpleCursorAdapter(getActivity(), R.layout.rec_list_items, db.selectAllRecords(), new String[] {

我有一个SimpleCursorAdapter,它填充来自SQLite数据库的数据。它工作正常,但是“duration”列是以毫秒为单位的,我想在显示之前将其除以(duration/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);
选择所有记录:

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;
}

这里有两个选项:

一种是创建自定义SimpleCursorAdapter并覆盖setViewText()。在您的实现中,检查所讨论的textview是否被传递,并将view值设置为您想要的值。您必须将字符串转换为int(或float,您需要的)以应用精度

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