-2

我正在尝试访问数据库“listOfFolder”表“文件夹”中的所有数据,并希望将数据存储在字符串数组文件夹 [] 中,但我正在了解如何解决 ArrayIndexOutOfBoundsException。

try{

  mydb = openOrCreateDatabase("listOfFolder", MODE_WORLD_WRITEABLE, null);  

    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
      }

int count = 0;
String folders[] = null;
Cursor folderCursor = mydb.query("folder", null, null, null, null, null, null); 
while(folderCursor.moveToNext()) {

  folders[count] = folderCursor.getString(folderCursor.getColumnIndex("name"));
                    count++;
}

ListView list = (ListView)findViewById(R.id.lv);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(DropboxActivity.this, android.R.layout.simple_list_item_1,folders);
list.setAdapter(adapter);
setContentView(R.layout.listoffolder);
4

3 回答 3

4

这是你的问题:

String folders[] = null;

你期望会发生什么?

这段代码是个坏主意,因为您不知道查询将带回多大的集合。您必须调用new以分配足够大的数组。

如果您可以使用,我更喜欢像List这样的集合。也看看这个

于 2012-07-03T20:26:42.013 回答
4

改变

String folders[] = null;
Cursor folderCursor = mydb.query("folder", null, null, null, null, null, null); 
while(folderCursor.moveToNext()){
    folders[count] = folderCursor.getString(folderCursor.getColumnIndex("name"));
    count++;
}

Cursor folderCursor = mydb.query("folder", null, null, null, null, null, null);
if (folderCursor.moveToFirst()) {
    String folders[] = new String[folderCursor.getCount()];
    do {
        folders[count] = folderCursor.getString(folderCursor.getColumnIndex("name"));
        count++;
    } while(folderCursor.moveToNext());
}
于 2012-07-03T20:27:37.647 回答
0

像这样:

ArrayList<datatypehere> namehere=new ArrayList<datatypehere>();

然后,您可以通过以下方式将元素添加到列表中:

String example1 = "this is a string";
namehere.add(example1);

如果您搜索它们,JavaDocs 和 Java 教程中的列表相当多。

于 2012-07-03T21:02:53.557 回答