2013-12-08 14 views
6

Uygulamamda bir spiker alıyorum. Okulların bir listesini gösteriyorum ancak kullanıcının bir okul seçmeyi bilmesi için varsayılan bir değer/istemi istiyorum. Ben de bir liste öğesi olarak istemine sahip olmak zorunda kalmadan bunu yapmak istiyorum. Herhangi bir fikir? varsayılan metni ayarlamak içinAndroid çevirici varsayılan metni belirle

selectSchoolSpinner = (Spinner) findViewById(R.id.select_school_spinner); 
spinnerSchoolList = new ArrayList<String>(); 

spinnerSchoolList.add("Please select School"); 
//I don't want to have a prompt like the latter  

ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, 
    android.R.layout.simple_spinner_item, spinnerSchoolList); 

spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

selectSchoolSpinner.setAdapter(spinnerAdapter); 

cevap

9

deneyin setSelection yöntemi::

spinner.setSelection(adapter.getPosition(DEFAULT_CURRENCY_TYPE))

Ve bu bağlantıyı bakın: How to make an Android Spinner with initial text "Select One"

İşte şimdiye kadar benim spinner kodudur. Çok faydalıdır (@aaronvargas cevabı, ihtiyacınız olan şeydir).

+0

teşekkürler benim için çalıştı. –

17

Sen onun kurucu istediğiniz metin için bir dize ile özel ArrayAdapter oluşturmalısınız. Ardından, dizininizin ilk elemanını varsayılan metninizle değiştirmeli ve kullanıcı döndürücüyü tıkladıktan sonra orijinal diziye geri dönmelidir.

Örnek:

Etkinlik sınıfı:

public class SpinnerActivity extends Activity { 

    Spinner spinner; 
    String defaultTextForSpinner = "Your deafult text here"; 
    String[] arrayForSpinner = {"One", "Two", "Three"}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_spinner); 

     spinner = (Spinner) findViewById(R.id.your_spinner); 
     spinner.setAdapter(new CustomSpinnerAdapter(this, R.layout.spinner_row, arrayForSpinner, defaultTextForSpinner)); 
    } 
    } 

CustomSpinnerAdapter sınıfı:

public class CustomSpinnerAdapter extends ArrayAdapter<String>{ 

    Context context; 
    String[] objects; 
    String firstElement; 
    boolean isFirstTime; 

    public CustomSpinnerAdapter(Context context, int textViewResourceId, String[] objects, String defaultText) { 
     super(context, textViewResourceId, objects); 
     this.context = context; 
     this.objects = objects; 
     this.isFirstTime = true; 
     setDefaultText(defaultText); 
    } 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     if(isFirstTime) { 
      objects[0] = firstElement; 
      isFirstTime = false; 
     } 
     return getCustomView(position, convertView, parent); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     notifyDataSetChanged(); 
     return getCustomView(position, convertView, parent); 
    } 

    public void setDefaultText(String defaultText) { 
     this.firstElement = objects[0]; 
     objects[0] = defaultText; 
    } 

    public View getCustomView(int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View row = inflater.inflate(R.layout.spinner_row, parent, false); 
     TextView label = (TextView) row.findViewById(R.id.spinner_text); 
     label.setText(objects[position]); 

     return row; 
    } 

    } 
+0

Teşekkürler, mükemmel çalışıyor, iyi iş! –

+0

getCustomView yönteminde hata alıyorum. R.id.tremps_spinner_row ve R.id.tremps_spinner_text nedir –

+0

Cevabımı tekrar kontrol edin, ben düzenledim. spinner_row, bir çevirici öğesinin düzenidir. spinner_text, spinner_row düzeninin içindeki TextView'tir –

1
 @Override 
    protected void onPostExecute(PositionBean[] result) { 
     String[] spinnerArray = new String[result.length]; 

     if(result!=null) { 

      for (int i = 0; i < result.length; i++) { 

       String positionName = result[i].getPositionName(); 
       spinnerArray[i] = result[i].getPositionName(); 

      } 
      ArrayList<String> positionList = new ArrayList<String>(Arrays.asList(spinnerArray)); 
      positionList.add(0,"select"); 
      String [] positions = positionList.toArray(new String[positionList.size()]); 

      ArrayAdapter<String> adapter = new ArrayAdapter<String>(EngineActivity.this, android.R.layout.simple_spinner_item, 
        positions); 
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      positionSpinner.setAdapter(adapter); 
     }else{ 
      Log.d("NULL", "This is null"); 
     } 

    } 
+0

Diziyle ilgili küçük bir oyun sorunu çözdü, umarım bu birilerine yardımcı olur –