We present a numerical method for solving Poisson's equation, with variable coefficients and Dirichlet boundary conditions, on two-dimensional regions. The approach uses a fhite-volume discretization, which embeds the domain in a regular Cartesian grid. We treat the solution as a cell-centered quantity, even when those centers are outside the domain. Cells that contain a portion of the domain boundafy use conservative differencing of second-order accurate fluxes, on each cell volume. The calculation of the boundary flux ensures that the conditioning of the matrix is relatively unaffected by small cell volumes. This allows us to use multi-grid iterations with a simple point relaxation strategy. We have, combined this with an adaptive mesh refinement (AMR) procedure. We provide evidence that the algorithm is second-order accurate on various exact solutions, and compare the adaptive and non-adaptive calculations.