Android Open Source - wiki-contacts-android Spinner Form






From Project

Back to project page wiki-contacts-android.

License

The source code is released under:

Apache License

If you think the Android project wiki-contacts-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.kahkong.wikicontacts.form;
/*  ww  w.j  a  v a  2  s .c om*/
import java.util.Iterator;
import java.util.List;

import com.kahkong.wikicontacts.R;
import com.kahkong.wikicontacts.callback.Validator;
import com.kahkong.wikicontacts.modal.CountryCode;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;

/**
 * 
 * @author Poh Kah Kong
 *
 */
public class SpinnerForm extends RelativeLayout  {
  private Context context;
  private String[] values;
  private Validator validator;
  private boolean isSubmitted = false;  

  private Spinner spinner;
  private ImageView imageView;

  public SpinnerForm(Context context, AttributeSet attrs) {
    super(context, attrs);
    if (isInEditMode()) {
      return;
    }
    
    this.context = context;    
    inflate(context, R.layout.contact_edit_spinner, this);
    spinner = (Spinner) findViewById(R.id.editSpinnerSPF);
    imageView = (ImageView) findViewById(R.id.editImageViewSPF);
    imageView.setVisibility(View.INVISIBLE);
  }
  
  public void setItems(List<CountryCode> countryCodes, CountryCode select) {
    String value = null;
    if (select!=null) {
      value = select.getIsoCountryCode()+select.getCountry();
    } 
    setItems(countryCodes, value);
  }
  
  public void setItems(List<CountryCode> countryCodes, String value) {
    String[] labels = new String[countryCodes.size()+1];
    values = new String[countryCodes.size()+1];
    labels[0] = "Select a country";
    values[0] = "";
    int position = 0;
    int i=1;
    Iterator<CountryCode> iterator = countryCodes.iterator();
    while (iterator.hasNext()) {
      CountryCode countryCode = iterator.next();
      if (value!=null && countryCode.getIsoCountryCode().equals(value.substring(0, 2))) {
        position = i;
      }
      labels[i] = countryCode.getCountry() + " (+" + countryCode.getCountryCode() + ")";
      values[i] = countryCode.getIsoCountryCode() + countryCode.getCountryCode();
      i++;
    }
    spinner.setAdapter(new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, labels));
    spinner.setSelection(position);
  }
  
  public String getValue() {
    return values[spinner.getSelectedItemPosition()];
  }

  public void setValidator(final Validator validator) {
    this.validator = validator;
    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
      @Override
      public void onItemSelected(AdapterView<?> arg0, View arg1,
          int arg2, long arg3) {
        if (!isSubmitted) {
          return;
        }        
        isValidated();
      }

      @Override
      public void onNothingSelected(AdapterView<?> arg0) {
      }      
    });
  }

  public boolean submit() {
    isSubmitted = true;
    return isValidated();
  }

  private boolean isValidated() {  
    int status = validator.validate(getValue());
    if (status>0) {
      imageView.setVisibility(View.VISIBLE);
      return false;
    } else {
      imageView.setVisibility(View.INVISIBLE);
      return true;
    }
  }
}




Java Source Code List

com.kahkong.wikicontacts.callback.OnChangeListener.java
com.kahkong.wikicontacts.callback.OnClickListener.java
com.kahkong.wikicontacts.callback.OnCompleteListener.java
com.kahkong.wikicontacts.callback.OnEventListener.java
com.kahkong.wikicontacts.callback.OnTimeOutListener.java
com.kahkong.wikicontacts.callback.Validator.java
com.kahkong.wikicontacts.controller.AddEditContactActivity.java
com.kahkong.wikicontacts.controller.CallDetectService.java
com.kahkong.wikicontacts.controller.EditContactActivity.java
com.kahkong.wikicontacts.controller.SearchActivity.java
com.kahkong.wikicontacts.controller.TestActivity.java
com.kahkong.wikicontacts.controller.UpdateEditContactActivity.java
com.kahkong.wikicontacts.form.EditTextForm.java
com.kahkong.wikicontacts.form.ImageUploadForm.java
com.kahkong.wikicontacts.form.MultiEditTextForm.java
com.kahkong.wikicontacts.form.OptionsForm.java
com.kahkong.wikicontacts.form.RadioGroupForm.java
com.kahkong.wikicontacts.form.SpinnerForm.java
com.kahkong.wikicontacts.form.TagsForm.java
com.kahkong.wikicontacts.link.EmailLink.java
com.kahkong.wikicontacts.link.Link.java
com.kahkong.wikicontacts.link.NumberLink.java
com.kahkong.wikicontacts.link.TagLink.java
com.kahkong.wikicontacts.link.UrlLink.java
com.kahkong.wikicontacts.modal.ContactAndImage.java
com.kahkong.wikicontacts.modal.Contact.java
com.kahkong.wikicontacts.modal.CountryCode.java
com.kahkong.wikicontacts.modal.CountryCodesWithSelect.java
com.kahkong.wikicontacts.service.ContactServiceImpl.java
com.kahkong.wikicontacts.service.ContactService.java
com.kahkong.wikicontacts.service.CountryCodeServiceImpl.java
com.kahkong.wikicontacts.service.CountryCodeService.java
com.kahkong.wikicontacts.service.ImageServiceImpl.java
com.kahkong.wikicontacts.service.ImageService.java
com.kahkong.wikicontacts.service.IntentServiceImpl.java
com.kahkong.wikicontacts.service.IntentService.java
com.kahkong.wikicontacts.service.NotificationServiceImpl.java
com.kahkong.wikicontacts.service.NotificationService.java
com.kahkong.wikicontacts.service.PhoneBookServiceImpl.java
com.kahkong.wikicontacts.service.PhoneBookService.java
com.kahkong.wikicontacts.service.PreferencesServiceImpl.java
com.kahkong.wikicontacts.service.PreferencesService.java
com.kahkong.wikicontacts.service.ResourceServiceImpl.java
com.kahkong.wikicontacts.service.ResourceService.java
com.kahkong.wikicontacts.service.ValidationServiceImpl.java
com.kahkong.wikicontacts.service.ValidationService.java
com.kahkong.wikicontacts.service.WebServiceImpl.java
com.kahkong.wikicontacts.service.WebService.java
com.kahkong.wikicontacts.subcontroller.CallStateListener.java
com.kahkong.wikicontacts.subcontroller.FlowLayout.java
com.kahkong.wikicontacts.subcontroller.IncomingContactLayout.java
com.kahkong.wikicontacts.subcontroller.InfoDialog.java
com.kahkong.wikicontacts.subcontroller.LoadingDialog.java
com.kahkong.wikicontacts.subcontroller.ResultAdaptor.java
com.kahkong.wikicontacts.subcontroller.ViewContactDialog.java
com.kahkong.wikicontacts.subcontroller.ViewFormatter.java