public static List<Voltage> getVolts(final SharedPreferences preferences) {
   final List<Voltage> volts = new ArrayList<Voltage>();
   try {
     BufferedReader br = new BufferedReader(new FileReader(MV_TABLE0), 256);
     String line = "";
     while ((line = br.readLine()) != null) {
       final String[] values = line.split("\\s+");
       if (values != null) {
         if (values.length >= 2) {
           final String freq = values[0].replace("mhz:", "");
           final String currentMv = values[1];
           final String savedMv = preferences.getString(freq, currentMv);
           final Voltage voltage = new Voltage();
           voltage.setFreq(freq);
           voltage.setCurrentMV(currentMv);
           voltage.setSavedMV(savedMv);
           volts.add(voltage);
         }
       }
     }
     br.close();
   } catch (FileNotFoundException e) {
     Log.d(TAG, MV_TABLE0 + " does not exist");
   } catch (IOException e) {
     Log.d(TAG, "Error reading " + MV_TABLE0);
   }
   return volts;
 }
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

      final ViewHolder holder;

      if (convertView == null) {
        convertView = mInflater.inflate(R.layout.list_volt, null);
        holder = new ViewHolder();
        holder.mFreq = (TextView) convertView.findViewById(R.id.Freq);
        holder.mCurrentMV = (TextView) convertView.findViewById(R.id.mVCurrent);
        holder.mSavedMV = (TextView) convertView.findViewById(R.id.mVSaved);
        convertView.setTag(holder);
      } else {
        holder = (ViewHolder) convertView.getTag();
      }

      final Voltage voltage = mVoltages.get(position);

      holder.setFreq(voltage.getFreq());
      holder.setCurrentMV(voltage.getCurrentMV());
      holder.setSavedMV(voltage.getSavedMV());

      return convertView;
    }
  protected Dialog onCreateDialog(final int id) {
    switch (id) {
      case DIALOG_EDIT_VOLT:
        final LayoutInflater factory = LayoutInflater.from(this);
        final View voltageDialog = factory.inflate(R.layout.voltage_dialog, null);

        final EditText voltageEdit = (EditText) voltageDialog.findViewById(R.id.voltageEdit);
        final SeekBar voltageSeek = (SeekBar) voltageDialog.findViewById(R.id.voltageSeek);
        final TextView voltageMeter = (TextView) voltageDialog.findViewById(R.id.voltageMeter);

        final String savedMv = mVoltage.getSavedMV();
        final int savedVolt = Integer.parseInt(savedMv);
        voltageEdit.setText(savedMv);
        voltageEdit.addTextChangedListener(
            new TextWatcher() {

              @Override
              public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub

              }

              @Override
              public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                // TODO Auto-generated method stub

              }

              @Override
              public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
                final String text = voltageEdit.getText().toString();
                int value = 0;
                try {
                  value = Integer.parseInt(text);
                } catch (NumberFormatException nfe) {
                  return;
                }
                voltageMeter.setText(text + " mV");
                final int index = getNearestStepIndex(value);
                voltageSeek.setProgress(index);
              }
            });

        voltageMeter.setText(savedMv + " mV");
        voltageSeek.setMax(40);
        voltageSeek.setProgress(getNearestStepIndex(savedVolt));
        voltageSeek.setOnSeekBarChangeListener(
            new OnSeekBarChangeListener() {

              @Override
              public void onProgressChanged(SeekBar sb, int progress, boolean fromUser) {
                if (fromUser) {
                  final String volt = Integer.toString(STEPS[progress]);
                  voltageMeter.setText(volt + " mV");
                  voltageEdit.setText(volt);
                }
              }

              @Override
              public void onStartTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub

              }

              @Override
              public void onStopTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub

              }
            });

        return new AlertDialog.Builder(VoltageControlActivity.this)
            .setTitle(mVoltage.getFreq() + " MHz Voltage")
            .setView(voltageDialog)
            .setPositiveButton(
                "Save",
                new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int whichButton) {
                    removeDialog(id);
                    final String value = voltageEdit.getText().toString();
                    SharedPreferences.Editor editor = preferences.edit();
                    editor.putString(mVoltage.getFreq(), value);
                    editor.commit();
                    mVoltage.setSavedMV(value);
                    mAdapter.notifyDataSetChanged();
                  }
                })
            .setOnCancelListener(
                new OnCancelListener() {
                  @Override
                  public void onCancel(DialogInterface arg0) {
                    removeDialog(id);
                  }
                })
            .create();
      default:
        return null;
    }
  };