2012-07-03 48 views
0

我想從數據庫「listOfFolder」表「文件夾」訪問所有的數據,並希望將數據存儲在字符串數組文件夾[]但我得到如何解決ArrayIndexOutOfBoundsException。如何解決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

變化

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()); 
} 
+0

之後,我想創建一個列表視圖,再次我得到nullpointerexception那裏ListView list =(ListView)findViewById(R.id.lv); \t \t \t ArrayAdapter adapter = new ArrayAdapter (DropboxActivity.this,android.R.layout.simple_list_item_1,folders); \t \t \t list.setAdapter(adapter); \t \t \t setContentView(R.layout.listoffolder); – sachin

+0

獲得空指針異常在 \t \t \t list.setAdapter(adapter); – sachin

+0

可能'findViewById'找不到您的ListView。你確定在佈局xml文件中有一個ID爲「@ + id/lv」的ListView嗎? – vasart

4

這是你的問題:

String folders[] = null; 

你是怎麼想到要發生什麼?

這段代碼是一個壞主意,因爲你不知道查詢會帶回多大的集合。您必須致電new分配足夠大的陣列。

我更喜歡像List這樣的集合,如果它可用。也檢查this一個。

+0

我如何將數據存儲在列表中 – sachin

+0

請參閱我的編輯。並瞭解如何讓Google安裝在您的機器上。 – duffymo

0

像這樣:

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

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

然後你可以通過元素添加到列表

如果您搜索它們,那麼Theres在JavaDocs和Java教程中的列表上非常有用。