来自多个数据库行的Listview数据

时间:2014-02-17 10:24:34

标签: android sqlite listview

我目前正在使用从SQLite数据库填充的listview。

public Set<String> getData() {
    Set<String> set = new HashSet<String>();

    String selectQuery = "select * from " + TABLE;

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    if (cursor.moveToFirst()) {
        do {
            set.add(cursor.getString(1));
        } while (cursor.moveToNext());
    }

    cursor.close();
    db.close();

    return set;
}

然后用

填充列表视图
private void populateListView() {

    lv = (ListView) findViewById(R.id.listViewSetLocks);

    DatabaseHandler db = new DatabaseHandler(getApplicationContext());
    Set<String> set = db.getData();

    List<String> list = new ArrayList<String>(set);

    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
            this, android.R.layout.simple_list_item_1, list );

    lv.setAdapter(arrayAdapter); 
    registerForContextMenu(lv);

}

这一切都很完美。我决定稍微更改布局并使用2行列表视图,因此我需要访问数据库不同行中的数据。

对我来说,最好的方法是什么?

感谢

2 个答案:

答案 0 :(得分:0)

从我认为你的想法或许尝试阅读: http://www.vogella.com/tutorials/AndroidListView/article.html Lars Vogel做了非常好的教程

通过扩展Array或Cursor适配器,您可以更好地创建自定义适配器。

也许看看: http://www.learn-android-easily.com/2013/06/listview-with-custom-adapter.html

答案 1 :(得分:0)

为此,您必须创建custom listview。自定义列表视图允许您使用多个视图/文本视图来扩充自定义列表项布局。

对于数据库,只需要两个查询就可以通过以下方式获取不同的列值:

String selectQueryCombined = "select "+ col1+","+col2+"from " + TABLE;
Cursor cursor = db.rawQuery(selectQuery, null);

//To Retrieve value  :

String val=c.getString(c.getColumnIndex(Col1));
String val1=c.getString(c.getColumnIndex(Col));

现在只需在自定义列表视图项的文本视图中设置这些值。

希望这有帮助!