如何从列表中删除对象

时间:2018-03-05 14:54:43

标签: java android arraylist

我有一个课程,每次触摸屏幕时都会创建圆圈,当它符合某些条件时我想从列表中删除它们。我怎样才能做到这一点?感谢。

游戏课程:

public class Juego extends SurfaceView implements View.OnTouchListener {


Circulos circulos;
Paint paint;
int x, y, radio;

List<Circulos> lista_circulos = new ArrayList<Circulos>();

public Juego(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.setOnTouchListener(this);
    setFocusable(true);

    circulos = new Circulos(this);

    paint = new Paint();
}

public void onDraw(Canvas canvas){

    paint.setColor(Color.WHITE);
    canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), paint);

    for (Circulos circulos : lista_circulos) {
        circulos.onDraw(canvas);
    }

    radio = circulos.radio_inicial;

    invalidate();
}

private Circulos crearCirculos() {
    return new Circulos(this);
}

@Override
public boolean onTouch(View view, MotionEvent motionEvent) {

    x = (int) motionEvent.getX();
    y = (int) motionEvent.getY();

    crearCirculo();

    invalidate();
    return false;
}

public void crearCirculo(){
    lista_circulos.add(crearCirculos());
}

public void borrar(){
    lista_circulos.remove(0);
}

}

圈子类:

public class Circulos {

Juego juego;
Paint paint;
int radio_inicial, aumento_de_radio, x, y;

boolean una_vez = true;
boolean muere = false;

public Circulos(Juego juego) {

    this.juego = juego;

    paint = new Paint();
}

public void onDraw(Canvas canvas) {

    if (una_vez == true) {
        Random random = new Random();
        radio_inicial = random.nextInt(20);
        aumento_de_radio = random.nextInt(10) + 10;

        x = juego.x;
        y = juego.y;

        una_vez = false;
    }

    canvas.drawCircle(x, y, radio_inicial, paint);

    radio_inicial = radio_inicial + aumento_de_radio;

    if (radio_inicial > canvas.getWidth() && radio_inicial > canvas.getHeight()) {
        juego.borrar();
    }
}

}

我试图用“lista_circulos.remove(0);”消除圆圈。但如果我创造了很多圈子就会崩溃。

logcat的:

03-05 17:10:15.719 5889-5889/com.example.agusv.arteconcirculos E/AndroidRuntime: FATAL EXCEPTION: main
                                                                             Process: com.example.agusv.arteconcirculos, PID: 5889
                                                                             java.util.ConcurrentModificationException
                                                                                 at java.util.ArrayList$Itr.next(ArrayList.java:831)
                                                                                 at com.example.agusv.arteconcirculos.Juego.onDraw(Juego.java:42)
                                                                                 at android.view.View.draw(View.java:17071)
                                                                                 at android.view.SurfaceView.draw(SurfaceView.java:353)
                                                                                 at android.view.View.updateDisplayListIfDirty(View.java:16053)
                                                                                 at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3748)
                                                                                 at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3728)
                                                                                 at android.view.View.updateDisplayListIfDirty(View.java:16016)
                                                                                 at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3748)
                                                                                 at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3728)
                                                                                 at android.view.View.updateDisplayListIfDirty(View.java:16016)
                                                                                 at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3748)
                                                                                 at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3728)
                                                                                 at android.view.View.updateDisplayListIfDirty(View.java:16016)
                                                                                 at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3748)
                                                                                 at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3728)
                                                                                 at android.view.View.updateDisplayListIfDirty(View.java:16016)
                                                                                 at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3748)
                                                                                 at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3728)
                                                                                 at android.view.View.updateDisplayListIfDirty(View.java:16016)
                                                                                 at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3748)
                                                                                 at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3728)
                                                                                 at android.view.View.updateDisplayListIfDirty(View.java:16016)
                                                                                 at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:656)
                                                                                 at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:662)
                                                                                 at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:770)
                                                                                 at android.view.ViewRootImpl.draw(ViewRootImpl.java:2796)
                                                                                 at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2604)
                                                                                 at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2211)
                                                                                 at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246)
                                                                                 at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6301)
                                                                                 at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
                                                                                 at android.view.Choreographer.doCallbacks(Choreographer.java:683)
                                                                                 at android.view.Choreographer.doFrame(Choreographer.java:619)
                                                                                 at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
                                                                                 at android.os.Handler.handleCallback(Handler.java:751)
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                 at android.os.Looper.loop(Looper.java:154)
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:6077)
                                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

0 个答案:

没有答案