我尝试将Cursor数据转换为数组列表。但是在最后,数组列表中的所有数据都被最后一行覆盖。我做错了什么?
Cursor c = myDbHelper.getLvl1Cata();
String[] data = new String[3];
c.moveToFirst();
while(!c.isAfterLast()) {
data[0] = Integer.toString(c.getInt(0));
data[1] = c.getString(1);
data[2] = Integer.toString(c.getInt(2));
Log.e("cc", data[1]);
catalogueData.add(data);
c.moveToNext();
}
3条答案
按热度按时间332nm8kg1#
试试这个
data
是字符串数组。在原始代码中,多次向catalogueData
结构中添加了相同的数组。每次都更改了数组内容的值,但它仍然是同一个数组对象。所以你最终得到了catalogueData
,它保存了对一个数组的多个引用,而这个数组只能有一个data[0]
的值:你最后设定的东西这个答案通过为游标中的每一行使用一个新的不同数组来解决这个问题。
nbysray52#
试试这个:
isr3a4wc3#
将
String[] data = new String[3];
放入while循环。每次迭代都会覆盖数组对象。