【发布时间】:2011-09-14 09:30:56
【问题描述】:
我有一个列表视图,我想用对多个数据库表行进行的多次计算填充一行,绞盘将行 ID 作为列(组)。
因此,例如,我的一个数据库表有三行,所有 winch 的一个列都有一个唯一的行 ID,而另一列(组)对于所有行都具有相同的值,从而可以将它们分组在一起。
我想要做的是将光标传递到列组中具有相同值的每一行上,并在每一行上做一些事情,如加、减、减等,然后将每一行的结果添加到然后我可以附加到列表视图的值。
我该怎么做呢?
【问题讨论】:
我有一个列表视图,我想用对多个数据库表行进行的多次计算填充一行,绞盘将行 ID 作为列(组)。
因此,例如,我的一个数据库表有三行,所有 winch 的一个列都有一个唯一的行 ID,而另一列(组)对于所有行都具有相同的值,从而可以将它们分组在一起。
我想要做的是将光标传递到列组中具有相同值的每一行上,并在每一行上做一些事情,如加、减、减等,然后将每一行的结果添加到然后我可以附加到列表视图的值。
我该怎么做呢?
【问题讨论】:
您可以将结果放在Array 中,然后对每个项目执行您想要的操作。然后使用arrayAdapter 将项目放入其中。
public String[][] getResultSetAsArray(Cursor cursor) {
int numberOfColumns = cursor.getColumnCount();
int numberOfRows = cursor.getCount();
String [][] resultSetAsArray = new String[numberOfColumns][numberOfRows];
for (int currentColumn = 0; currentColumn < numberOfColumns; currentColumn++)
{
cursor.moveToFirst();
for (int currentRow = 0; currentRow < numberOfRows; currentRow++)
{
resultSetAsArray[currentColumn][currentRow] = cursor.getString(currentColumn);
cursor.moveToNext();
}
}
return resultSetAsArray;
}
此方法将光标的所有结果返回到二维数组中。如果您只有一列,您只需使用该方法并在其后面加上[0] 即可将其放入一个数组中。
例子:
String table = tablename;
String[] columns = {column1, column2};
String orderBy = columnNameToOrder;
Cursor cursor = db.query(table, columns, null, null, null, null, orderBy);
String[] column1Values = dbRetrieval.getResultSetAsArray(tabLabelCursor)[0];
String[] column2Values = dbRetrieval.getResultSetAsArray(tabLabelCursor)[1];
String[][] values = dbRetrieval.getResultSetAsArray(tabLabelCursor); // all the database values in a two-dimensional array.
【讨论】: