我正在尝试访问数据库“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);
答案 0 :(得分:4)
这是你的问题:
String folders[] = null;
您期望发生什么?
这段代码是个坏主意,因为您不知道查询将带来多大的代码。您必须调用new
来分配足够大的数组。
答案 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中的列表上会有很大的优势。