Esempio n. 1
0
  /** Fills all the list with the vehicles objects */
  private void fillData() {
    Cursor vehicleCursor = mDbHelper.fetchVehicles();
    // TODO Use a CursorLoader (startManagingCursor is deprecated)
    // TODO Perhaps save thumbnail to database?
    startManagingCursor(vehicleCursor);
    SimpleCursorAdapter vehicleAdapter =
        new SimpleCursorAdapter(
            this,
            R.layout.vehiclerow,
            vehicleCursor,
            new String[] {"makeName", "model", "registration", "registration", "_id"},
            new int[] {
              R.id.vehicleRow_make,
              R.id.vehicleRow_model,
              R.id.vehicleRow_pic,
              R.id.vehicleRow_registration,
              R.id.vehicleRow_avgConsumption
            });
    vehicleAdapter.setViewBinder(
        new ViewBinder() {

          public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
            if (view.getId() == R.id.vehicleRow_avgConsumption) {
              if (mDbHelper.getNumFuelings(cursor.getInt(columnIndex)) > 0) {
                TextView text = (TextView) view;
                text.setText(
                    String.format(
                        "%.1f l/100Km",
                        mDbHelper.getAverageFuelConsumptionByVehicleID(
                            cursor.getInt(columnIndex))));
              }
              return true;
            }
            if (view instanceof TextView) {
              TextView text = (TextView) view;
              text.setText(cursor.getString(columnIndex));
              return true;
            }
            if (view.getId() == R.id.vehicleRow_pic) {
              ImageView image = (ImageView) view;
              File directory = new File(Environment.getExternalStorageDirectory(), "fuelmonitor/");
              File file = new File(directory, (cursor.getString(columnIndex) + "t.jpg"));
              if (file.exists() && file.length() > 0)
                image.setImageBitmap(BitmapFactory.decodeFile(file.getAbsolutePath()));
              return true;
            }
            return false;
          }
        });
    getListView().setAdapter(vehicleAdapter);
  }