【发布时间】:2013-04-16 04:33:12
【问题描述】:
我有一个模型lineModel,我用它来为我的gridAdapter 填充一个数组items。 当我手动填充条目时,我的模型工作正常。例如:
lineModel[] items = {
new lineModel(2, "B", "", "#52D017", 5, 10, 30),
new lineModel(3, "C", "", "#000000", 4, 8, 30),
};
但是,当使用 SQLite 填充 items 时,我会收到 ArrayIndexOutOfBoundsException
具体来说:
04-15 15:50:21.322: E/AndroidRuntime(26804): java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
04-15 15:50:21.322: E/AndroidRuntime(26804): at com.idealiner.metrosleepuniversal.model.GridModel.getLines(GridModel.java:68)
第 68 行 是当我调用 lineModel 并使用光标中的值填充它时。
items[i] = new lineModel(i, c.getString(c_line), c.getString(c_name), c.getString(c_ccolor), 0, 0, 0);
方法getLines() 应该返回对象数组,但我相信在while() 循环中的某个地方存在问题,很可能是在填充数组时。
任何帮助/建议/指导将不胜感激。
整个方法getLines如下:
public lineModel[] getLines() {
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String[] sqlSelect = {"*"};
String sqlTables = "lines";
qb.setTables(sqlTables);
Cursor c = qb.query(db, sqlSelect, null, null,
null, null, null);
lineModel[] items = {};
int i=0;
int c_line = c.getColumnIndex("line_id");
int c_name = c.getColumnIndex("line_name");
int c_ccolor = c.getColumnIndex("line_color");
int c_tcolor = c.getColumnIndex("text_color");
c.moveToFirst();
if (c != null) {
while(c.moveToNext()) {
items[i] = new lineModel(i, c.getString(c_line), c.getString(c_name), c.getString(c_ccolor), 0, 0, 0);
i++;
}
c.close();
}
return items;
}
【问题讨论】:
标签: android android-arrayadapter android-sqlite android-cursor