2015-10-12 25 views
0

名單:private List<EventRect> mEventRects; 這個列表包含記錄event.getIdOperatore() == 1event.getIdOperatore() == 3 我得到這個錯誤:Android ArrayIndexOutOfBoundsException:length = 2;指數= 2

java.lang.ArrayIndexOutOfBoundsException: length=2; index=2 

代碼:

int [] o = {1,3}; 
private void drawEvents(float startFromPixel, Canvas canvas) { 
    if (mEventRects != null && mEventRects.size() > 0) { 
     for (int i = 0; i < mEventRects.size(); i++) { 
      if(mEventRects.get(i).event.getIdOperatore() == o[i]){ 
       Log.d("mEventRects", 
       mEventRects.get(i).event.getIdOperatore() + 
       " idOperatore " + o[i]); 
... 
... 
} 

回答

1

貌似mEventRects.size() != o.length

如果你確定他們是平等的,然後試着這樣說:

for (int i = 0; i<mEventRects.size() && i<o.length; < i++) { 
+0

我敢肯定,是相同的,但它似乎只讀第一條記錄,即只有** mEventRects:1 idOperatore 1 ** – user2895164

0

你的int數組int[] o只有兩個元素。所以在你的for()循環中,如果你的迭代器比1高,你會得到異常。因此,要使此代碼正常工作,您的mEventRects.size()需要爲2或更低。

而不是將您的1和3存儲在一個int數組中,只需在for()循環中明確地測試它們。因此,而不是這樣的:

if(mEventRects.get(i).event.getIdOperatore() == o[i]) 

你要做到這一點:

if(mEventRects.get(i).event.getIdOperatore() == 1) 

或...

if(mEventRects.get(i).event.getIdOperatore() == 3)