2013-12-08 3 views
6

Я внедрил spinner в свое приложение. Я показываю список школ, но мне нужно значение по умолчанию/подсказка, чтобы пользователь знал, выбрать школу. Я также хочу сделать это, не имея приглашения в качестве элемента списка. Есть идеи?Android spinner set default text

Вот мой кок код до сих пор:

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); 

ответ

9

Try метод setSelection установить текст по умолчанию:

spinner.setSelection(adapter.getPosition(DEFAULT_CURRENCY_TYPE))

И смотрите по этой ссылке: How to make an Android Spinner with initial text "Select One". Это очень полезно (ответ @aaronvargas - это то, что вам нужно).

+0

Спасибо работал для меня. –

17

Вы должны создать собственный ArrayAdapter со строкой для нужного текста в своем конструкторе. Затем вы должны переключить первый элемент вашего массива с текстом по умолчанию, а после того, как пользователь нажимает на счетчик, он должен вернуться к исходному массиву.

Пример: класс

активность:

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 класс:

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

Спасибо, он отлично работает, хорошая работа! –

+0

Я получаю ошибку в методе getCustomView. что такое R.id.tremps_spinner_row и R.id.tremps_spinner_text –

+0

Проверьте мой ответ еще раз, я его отредактировал. spinner_row - это макет для элемента счетчика. spinner_text - это TextView внутри макета spinner_row –

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

Немного поиграть с решеткой решена проблема, я надеюсь, что это поможет кому-то –