如何解决ArrayIndexOutOfBoundsException

时间:2012-07-03 20:23:55

标签: android database sqlite

我正在尝试访问数据库“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);

3 个答案:

答案 0 :(得分:4)

这是你的问题:

String folders[] = null;

您期望发生什么?

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

如果可以使用,我更喜欢像List这样的集合。也请检查一下this

答案 1 :(得分: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());
}

答案 2 :(得分:0)

像这样:

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

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

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

如果您搜索它们,那么在JavaDocs和Java Tutorials中的列表上会有很大的优势。