我知道这个问题已被多次询问但由于某种原因我无法解决。
我100%确定列名称没有问题。
这是表格定义:
CREATE TABLE IF NOT EXISTS categories (category_id INTEGER, category_name TEXT, PRIMARY KEY(category_id))
这是对列的访问。 可以看出,我先做一个小测试,以确保我有正确的列名。 使用名称I打印到LogCat第一行中列的值。 它完美地运作。然而,当传递给适配器时,我得到了上述错误。
Cursor mGroupsCursor = _dbHelper.fetchGroup();
getActivity().startManagingCursor(mGroupsCursor);
mGroupsCursor.moveToFirst();
String colName = "category_name";
Log.d("ToratYavneh", "i = " + i + " category_name = " + mGroupsCursor.getString(mGroupsCursor.getColumnIndex(colName)));
ExpandableListView elv = (ExpandableListView) view.findViewById(R.id.list);
MyExpandableListAdapter adapter = new MyExpandableListAdapter(mGroupsCursor, getActivity(),
R.layout.rowlayout_category, // Your row layout for a group
R.layout.rowlayout_sub_category, // Your row layout for a child
new String[] { colName }, // Field(s) to use from group cursor
new int[] {R.id.category_name }, // Widget ids to put group data into
new String[] { "sub_category_name" }, // Field(s) to use from child cursors
new int[] { R.id.sub_category_name }); // Widget ids to put child data into
elv.setAdapter(adapter);
我认为可能问题出在孩子身上,但它永远不会到达getChildrenCursor。
以下是光标的代码:
public Cursor fetchGroup() {
String query = "SELECT * FROM categories";
return _database.rawQuery(query, null);
}