// Source code file MyView.java. package it372.drawdots; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.MotionEvent; import android.view.View; import java.util.ArrayList; public class MyView extends View { private Context savedContext; private ArrayList rows = new ArrayList( ); public MyView(Context context) { super(context); savedContext = context; this.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent e) { int foundID = 0; if (e.getAction( ) == MotionEvent.ACTION_UP) { for (DBRow r : rows) { if (Math.abs(e.getX() - r.x) < 20.0f && Math.abs(e.getY() - r.y) < 20.0f) { foundID = r.id; } } System.out.println("Found ID: " + foundID); } return true; } }); } @Override public boolean performClick() { return true; } @Override public void onDraw(Canvas canvas) { Paint paint = new Paint( ); PointsDBHelper dbh = new PointsDBHelper(savedContext); SQLiteDatabase db = dbh.getReadableDatabase( ); Cursor c = db.query("points", new String[ ] {"id", "xposition", "yposition"}, null, null, null, null, null); c.moveToFirst( ); do { int id = c.getInt(0); float x = c.getFloat(1); float y = c.getFloat(2); canvas.drawCircle(x, y, 8.0f, paint); rows.add(new DBRow(id, x, y)); } while (c.moveToNext( )); } }