从多个数据库行填充listview行

时间:2011-09-14 09:30:57

标签: android sqlite listview

我有一个listview,我想填充一行,在多个数据库表上进行多次计算。行winch将行id作为列(组)。

例如,我的一个数据库表有三行,所有绞盘都有一个coloumn的唯一行id,另一列(group)对所有行都有相同的值,允许它们组合在一起。

我想要做的是将光标传递到列组中具有相同值的每一行,并在每一行上做一些事情,如添加,减去,减去等,然后将每行的结果添加到然后我可以附加到列表视图的值。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以将结果放在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.