2012-11-24 149 views
2

我想從我的數組中添加項目到列表視圖中,但我總是得到一個異常。索引超出界限例外。 array

下面

是如何我添加的項目代碼:

items.add(new SectionItem("President")); 
       for(int a = 0; a <= presList.size(); a++) 
       { 
        String name = presList.get(a); 
        String companyName = presList.get(a + 1); 
        Log.d("company name:", companyName); 
        items.add(new EntryItem(name,companyName)); 
       } 

logcat的輸出:

11-24 04:36:44.981: I/System.out(719): [潘國駒博士, 世界科技出版公司(董事主席)] 
11-24 04:36:44.990: D/company name:(719): 世界科技出版公司(董事主席) 
11-24 04:36:44.990: D/AndroidRuntime(719): Shutting down VM 
11-24 04:36:44.990: W/dalvikvm(719): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 
11-24 04:36:45.010: E/AndroidRuntime(719): FATAL EXCEPTION: main 
11-24 04:36:45.010: E/AndroidRuntime(719): java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2 
11-24 04:36:45.010: E/AndroidRuntime(719): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) 
11-24 04:36:45.010: E/AndroidRuntime(719): at java.util.ArrayList.get(ArrayList.java:304) 
11-24 04:36:45.010: E/AndroidRuntime(719): at com.scba.organization.CouncilList$LoadAllMembers$1.run(CouncilList.java:192) 
11-24 04:36:45.010: E/AndroidRuntime(719): at android.app.Activity.runOnUiThread(Activity.java:4170) 
11-24 04:36:45.010: E/AndroidRuntime(719): at com.scba.organization.CouncilList$LoadAllMembers.onPostExecute(CouncilList.java:184) 
11-24 04:36:45.010: E/AndroidRuntime(719): at com.scba.organization.CouncilList$LoadAllMembers.onPostExecute(CouncilList.java:1) 
11-24 04:36:45.010: E/AndroidRuntime(719): at android.os.AsyncTask.finish(AsyncTask.java:602) 
11-24 04:36:45.010: E/AndroidRuntime(719): at android.os.AsyncTask.access$600(AsyncTask.java:156) 
11-24 04:36:45.010: E/AndroidRuntime(719): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615) 
11-24 04:36:45.010: E/AndroidRuntime(719): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-24 04:36:45.010: E/AndroidRuntime(719): at android.os.Looper.loop(Looper.java:137) 
11-24 04:36:45.010: E/AndroidRuntime(719): at android.app.ActivityThread.main(ActivityThread.java:4424) 
11-24 04:36:45.010: E/AndroidRuntime(719): at java.lang.reflect.Method.invokeNative(Native Method) 
11-24 04:36:45.010: E/AndroidRuntime(719): at java.lang.reflect.Method.invoke(Method.java:511) 
11-24 04:36:45.010: E/AndroidRuntime(719): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
11-24 04:36:45.010: E/AndroidRuntime(719): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
11-24 04:36:45.010: E/AndroidRuntime(719): at dalvik.system.NativeStart.main(Native Method) 
+0

也可以使用'foreach'到aviod索引問題。 –

回答

8

使用

for(int a = 0; a <= presList.size()-1; a++) 

OR

for(int a = 0; a < presList.size(); a++) 

代替

for(int a = 0; a <= presList.size(); a++) 
+0

謝謝,我解決了我的問題。我會在答案允許的時候打勾:) – Jolene

+0

最受歡迎的朋友!!! :) –

4

應該

for(int a = 0; a < presList.size(); a++) 
{ 
     String name = presList.get(a); 
     String companyName = presList.get(a); 
     Log.d("company name:", companyName); 
     items.add(new EntryItem(name,companyName)); 
} 

比方說,我們有一個ArrayList用5項

所以訪問的ArrayList開始從元素索引0至4