循环访问数据库以填充listview

时间:2014-05-03 14:11:44

标签: android database

我正在尝试从数据库中填充listview。该数据库有三列row_id,lat和lon。所以我写了两个方法

public String getLat(long l){
.....
}
public String getLon(long l){
.....
}

现在在另一个FragmentAcivity我想通过获取每个row_id的名称和编号来加载listview。那么如何在另一个活动中循环遍历所有row_id。

我试过这个。这是逐个加载row_id

info.open();
    ArrayList<String> data = info.getAllData();
    String finalR[] = info.returnRows();
    for (int i = 0; i < finalR.length; i++) {
        long m = Long.parseLong(finalR[i]);
        String flat = info.getLat(m);
        String flon = info.getLon(m);
        Log.i(flat, flon);
    }
    info.close();

这是returnRows()

public String[] returnRows() {
    String[] columns = new String[] { KEY_ROWID, KEY_LAT, KEY_LON };
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null,
            null, null);
    String x[] = new String[10000];
    int iROW = c.getColumnIndex(KEY_ROWID);
    int i = 0;
    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
        x[i] = c.getString(iROW);
        i++;
    }
    return x;
}

但是它给了我numberformatexception无效的长&#34; null&#34;。请帮忙。

1 个答案:

答案 0 :(得分:0)

好吧,我终于明白为什么它给了我例外。在上面的代码我有

 String x[] = new String[10000];

但数据库并没有包含那么多值。我知道数据库只有两个值,所以我将其更改为2,异常消失了。因此,它似乎不会在遇到空值时停止,而是继续运行,从而产生异常。