/**
   * Helper method to create a spinner for a field and insert it into the View container. This uses,
   * the String[] to create the list, and selects the value that is passed in from the list (the
   * features value). Can be used for domains as well as types.
   */
  Spinner createSpinnerViewFromArray(View container, Field field, Object value, String[] values) {

    TextView fieldAlias = (TextView) container.findViewById(R.id.field_alias_txt);
    Spinner spinner = (Spinner) container.findViewById(R.id.field_value_spinner);
    fieldAlias.setText(field.getAlias());
    spinner.setPrompt(field.getAlias());

    ArrayAdapter<String> spinnerAdapter =
        new ArrayAdapter<String>(this.context, android.R.layout.simple_spinner_item, values);
    spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(spinnerAdapter);
    // set current selection based on the value passed in
    spinner.setSelection(spinnerAdapter.getPosition(value.toString()));

    return spinner;
  }
  /**
   * Helper method to create a date button, with appropriate onClick and onDateSet listeners to
   * handle dates as a long (milliseconds since 1970), it uses the locale and presents a button with
   * the date and time in short format.
   */
  Button createDateButtonFromLongValue(View container, Field field, long date) {

    TextView fieldAlias = (TextView) container.findViewById(R.id.field_alias_txt);
    Button dateButton = (Button) container.findViewById(R.id.field_date_btn);
    fieldAlias.setText(field.getAlias());

    Calendar c = Calendar.getInstance();
    c.setTimeInMillis(date);
    dateButton.setText(formatter.format(c.getTime()));

    addListenersToDatebutton(dateButton);

    return dateButton;
  }
  /**
   * Helper method to add the field alias and the fields value into columns of a view using standard
   * id names. If the field has a length set, then this is used to constrain the EditText's
   * allowable characters. No validation is applied here, it is assumed that the container has this
   * set already (in XML).
   */
  View createAttributeRow(View container, Field field, Object value) {

    TextView fieldAlias = (TextView) container.findViewById(R.id.field_alias_txt);
    EditText fieldValue = (EditText) container.findViewById(R.id.field_value_txt);
    fieldAlias.setText(field.getAlias());

    // set the length of the text field and its value
    if (field.getLength() > 0) {
      InputFilter.LengthFilter filter = new InputFilter.LengthFilter(field.getLength());
      fieldValue.setFilters(new InputFilter[] {filter});
    }

    Log.d(AttributeEditorActivity.TAG, "value is null? =" + (value == null));
    Log.d(AttributeEditorActivity.TAG, "value=" + value);

    if (value != null) {
      fieldValue.setText(value.toString(), BufferType.EDITABLE);
    } else {
      fieldValue.setText("", BufferType.EDITABLE);
    }

    return fieldValue;
  }