私はリストビューを含むレイアウトを持つアンドロイドアプリを持っています。
      LayoutInflater inflater = getLayoutInflater();
      row = inflater.inflate(R.layout.disc_row, parent, false);
「R.layout.disc_row」には、キャンバスを描画する SurfaceView が含まれています。そのため、ListView 内の各行には Canvas が含まれています。リストをスクロールしている間、行の他の要素がスクロールしている間、キャンバスはその場所にとどまります。デバイスの動作が悪いと思います。ListItem をクリックするまで、同じアプリはエミュレーターで何も描画しません。
おそらくペイントを使用して、ListViews (ビットマップではなく、いくつかの行のみ) 内で描画するためのより良い戦略はありますか? emulator sys アクティビティで作業が多すぎます。
前もって感謝します
付属クラス
public class DrawDiscInListView extends SurfaceView implements
    SurfaceHolder.Callback {
private static final String TAG = "DISCONT SurfaceView";
public DrawDiscInListView(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
    tryDrawing(holder);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int frmt, int w, int h) {
    tryDrawing(holder);
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
private void tryDrawing(SurfaceHolder holder) {
    Log.i(TAG, "Trying to draw...");
    Canvas canvas = holder.lockCanvas();
    if (canvas == null) {
        Log.e(TAG, "Cannot draw onto the canvas as it's null");
    } else {
        drawMyStuff(canvas);
        holder.unlockCanvasAndPost(canvas);
    }
}
private void drawMyStuff(final Canvas canvas) {
    Random random = new Random();
    Log.i(TAG, "Drawing...");
    canvas.drawRGB(255, 128, 128);
}
}