2015-09-06 103 views
0

我想添加一個類元素到旁邊繪製視圖中的數組列表。不幸的是add函數沒有添加所需的元素。 這是我的DrawView類。無法添加到類中的元素ArrayList裏面DrawView

請看裏面的drawgame和大小改變功能。

問題似乎是,數組列表的大小保持爲0而不是2,因此函數示出IndexOutOfBoundExeption ..

public class DrawView extends View { 
int i=0; 
float flag=0; 
float bubrank=2; 
ArrayList<bubble1> bub1 ; 
Context mContext; 
private int width, hieght; 


public DrawView(Context context,AttributeSet attrs){ 
    super(context,attrs); 
    mContext = context;  
    bub1 = new ArrayList<bubble1>();  

} 

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    drawgame(canvas); 
    try { 
     Thread.sleep(15); 
    } catch (InterruptedException e) { 
    } 
    invalidate(); 
} 

@Override 
protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
    super.onSizeChanged(w, h, oldw, oldh); 
    width = w; 
    hieght = h; 
    for (i = 0; i < bubrank; i++) { 
     bub1.get(i).setbound(0, 0, width, hieght);    
    } 


} 

public void drawgame(Canvas canvas) { 
    canvas.drawColor(Color.DKGRAY); 
    for (i = 0; i <bubrank; i++) 
     bub1.add(new bubble1(Color.BLUE, mContext)); 
    bub1.get(0).draw(canvas); 
    ............................... 

.............. ..........................................

請幫忙.. .. 謝謝。

+0

如果你已經知道ArrayList中都將有一個大小爲2,爲何不將其初始化爲'新的ArrayList (2);' – freddieptf

+0

我曾嘗試但力量工作。 –

回答

0

錯誤不在drawgame()中,它在onSizeChanged()中,在循環中。

for (i = 0; i < bubrank; i++) { 
bub1.get(i).setbound(0, 0, width, hieght);    
} 

的問題是,onSizeChanged是「回調」方法 - 它是由系統不知情的情況下叫你呼籲drawgame前() - ArrayList中尚未填補。你需要做一下教授在射擊遊戲中做的事情。

for (i = 0; i < bub1.size(); i++) { 
bub1.get(i).setbound(0, 0, width, hieght);    
} 

這解決了這個問題...

相關問題