Android从Sqlite DB填充ListView

时间:2016-05-29 23:52:09

标签: android database sqlite listview

我会尝试解释我的问题。我创建了一个基于Zxing库的小项目来读取和存储条形码。现在我要创建我的第一个ListView,其中包含来自正在运行的SQLite数据库的元素。 这是我的源代码

的摘录

将对DBAdapter

public boolean insertProduct(String barcode, int quantity)
{
    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_BARCODE, barcode);
    initialValues.put(KEY_QUANTITY, quantity);
    try {
        db.insert(DATABASE_TABLE, null, initialValues);
        return true;
    }
    catch(Exception ex){
        return false;
    }
}

public boolean deleteProduct(String barcode)
{
    return db.delete(DATABASE_TABLE, KEY_BARCODE + "=" + barcode, null) > 0;
}


public Cursor getAllProducts()
{
    return db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_BARCODE, KEY_QUANTITY}, null, null, null, null, null);
}

现在我不知道如何在Activity类中填充ListView。有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

由于getAllProducts()将返回游标,因此您可以使用游标适配器。以下是活动类的一些示例代码:

Cursor cursor = db.query(DATABASE_TABLE,
    new String[] {KEY_ROWID, KEY_BARCODE, KEY_QUANTITY}, null, null, null, null, null);

CursorAdapter listAdapter = new SimpleCursorAdapter(this, 
    _id_of_your_item_layout, // You'll have to make your own item layout
    cursor, 
    new String[] {KEY_ROWID, KEY_BARCODE, KEY_QUANTITY}, 
    new int[]{id_of_textview_1, id_of_textview_2, id_of_textview_3}, 0);

以下是细分:

CursorAdapter listAdapter = new SimpleCursorAdapter(Context context, 
    int layoutID,
    Cursor cursor, 
    String[] {FromColumns}, 
    int[] {toViews}, int flags);

值得注意的是,您不必使用自己的项目布局。这完全取决于每个列表项中您想要的字段数以及您希望它们的显示方式。 Android有一堆你可以使用的布局,这取决于它。如果您想要检查这些布局,可以使用link