这是设置表格列
的合同类中的代码 public static final String _ID = BaseColumns._ID;
public static final String TABLE_NAME = "tools";
public static final String COLUMN_TOOL_TYPE = "type";
public static final String COLUMN_COST = "cost";
public static final String COLUMN_IN_STOCK = "in_stock";
public static final String COLUMN_STOCK_LEVEL = "stock_quantity";
public static final String COLUMN_PICTURE = "picture";
正在创建数据库,我可以添加虚拟数据,并在COLUMN_PICTURE列中添加了一个drawable示例。但是当我使用
时 int imgColumnIndex = cursor.getColumnIndex(ToolEntry.COLUMN_PICTURE);
澄清这一行是来自bindView方法
int typeColumnIndex = cursor.getColumnIndex(ToolEntry.COLUMN_TOOL_TYPE);
int costColumnIndex = cursor.getColumnIndex(ToolEntry.COLUMN_COST);
int stockLevelColumnIndex = cursor.getColumnIndex(ToolEntry.COLUMN_STOCK_LEVEL);
int indicatorStock = cursor.getColumnIndex(ToolEntry.COLUMN_IN_STOCK);
int imgColumnIndex = cursor.getColumnIndex(ToolEntry.COLUMN_PICTURE);
所有其他columnindex都可以正常工作。我确实在其他人之后添加了图片列。但我已清除应用程序中的缓存/存储数据并将其卸载。
它总是返回-1。光标正在工作,因为它返回其他列的正确值。下面显示的是带有虚拟数据的SQLite数据库的转储。然后我用零写了第二行的BLOB条目。所以我可以使用内容值 values.put(ToolEntry.COLUMN_PICTURE,0);
但是当我尝试使用
时
toolImg = cursor.getBlob(imgColumnIndex);
当索引为-1
时崩溃答案 0 :(得分:0)
这对我来说是一个愚蠢的错误。我在一个地方正确定义了我的投影,但在另一个投影定义中遗漏了新列。