simpleCursorAdapter无法显示光标

时间:2016-02-08 22:14:31

标签: android listview simplecursoradapter

我想从DB检索数据。在我的DBAdapter中,我使用fetchAllBooks方法来获取游标:

 public Cursor fetchAllBooks()
    {
        String selectQuery = "SELECT " + TABLE_TITLE + "." + KEY_TITLE_ID + " As _id, "
                + KEY_TITLE + ", " + KEY_PRICE + ", " + KEY_ISBN
                +", GROUP_CONCAT(" + KEY_AUTHOR + ", ', ') AS authors"
                + " FROM " + TABLE_TITLE + " JOIN " + TABLE_AUTHOR
                + " USING (" + KEY_TITLE_ID + ")"
                + " GROUP BY " + KEY_TITLE_ID;
        Cursor c = db.rawQuery(selectQuery, null);
        return c;
    }

在主要活动中,我使用fillData方法填充ListView:

private void fillData() {

    Cursor c = db.fetchAllBooks();
    startManagingCursor(c);
    Log.d("count", c.getCount() + "");// could display the number of book. such as: count: 2; --- means cursor have 2 row(books)
    if(c.moveToFirst()) {
        do {
            Log.d("title", BookContract.getTitle(c)); // could display the title of each book;
        }while(c.moveToNext());
    }
    String[] from = new String[] {BookContract.KEY_TITLE, BookContract.KEY_AUTHORS};
    int[] to = new int[] { R.id.cart_row_title, R.id.cart_row_author};


    adapter = new SimpleCursorAdapter(this, R.layout.cart, c, from, to, 0);
    setListAdapter(adapter);
}

如您所见,LogCat可以显示光标的内容。这意味着我成功检索了光标。但是,listView无法显示书名和作者。我的代码中没有使用任何db.close()cursor.close()

cart_row.xml代表列表视图中的每个行项目。cart.xml包含列表视图:

提前致谢。

1 个答案:

答案 0 :(得分:1)

我设法回答了我自己的问题。有点搞笑......

请注意这句话:

  

cart_row.xml代表列表视图中的每个行项目。以及包含列表视图的cart.xml

simpleCursorAdapter需要cart_row.xml而不是cart.xml。因此,将simpleCursorAdapter更改为:

adapter = new SimpleCursorAdapter(this, R.layout.cart_row, c, from, to, 0);