在使用ListView和SimpleCursorAdaptor显示行值之前如何修改行值?

时间:2012-04-24 13:31:48

标签: android sqlite listview

我正在使用SimpleCursorAdaptor和ListView来显示我的SQLite数据库行中的值。我的行中的一个值是日期(列'日期')。我不需要显示这个日期,而是需要通过一个方法运行它,该方法将根据日期返回另一个字符串。这是我希望在列表中显示的值,而不是直接从数据库中获取的实际值。

简而言之,我希望显示数据库表行中除了一行之外的所有值,我需要在显示它之前更改它。

这是我的代码:

public class BinCollectionDayListActivity extends ListActivity{
    //
    private static final String fields[] = { "name", "date", BaseColumns._ID };
    //
    public void onCreate(Bundle savedInstanceState) {
        //
        super.onCreate(savedInstanceState);
        //
        DatabaseHelper helper = new DatabaseHelper(this);
        SQLiteDatabase database = helper.getWritableDatabase();
        Cursor data = database.query("names", fields, null, null, null, null, null);
        CursorAdapter dataSource = new SimpleCursorAdapter(this, R.layout.binrow, data, fields, new int[] { R.id.name, R.id.date });
        dataSource.getCursor().requery();
        //
        ListView view = getListView();
        view.setHeaderDividersEnabled(true);
        setListAdapter(dataSource);
        //
        helper.close();
        database.close();
    }
}

正如您所知,我对Android开发很陌生,并且很想知道实现所需结果的最佳方法是什么。

提前致谢,

1 个答案:

答案 0 :(得分:0)

我以前用过的两个选项:

阵列适配器(首选): 创建一个ArrayAdapter并将Cursor数据填充到ArrayAdapter中。 http://anujarosha.wordpress.com/2011/11/17/how-to-create-a-listview-using-arrayadapter-in-android/

ViewBinder :在光标上,您可以设置/指定一个ViewBinder,您可以在其中检查即将映射的数据,对其执行某些逻辑,并根据需要吐出不同的结果。这可能正是您正在寻找的,但是请考虑使用ArrayAdapter,因为它可以让您更好地控制,以后稍后切换这些东西会很痛苦。 Changing values from Cursor using SimpleCursorAdapter