2015-09-06 69 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);    
} 

这解决了这个问题...

相关问题