2013-12-08 3 views
6

내 앱에 회 전자를 구현했습니다. 학교 목록을 보여주고 있지만 사용자가 학교를 선택할 수 있도록 기본값/프롬프트를 원합니다. 또한 목록 항목으로 프롬프트를 표시하지 않고이 작업을 수행하려고합니다. 어떤 아이디어? 기본 텍스트를 설정하는Android 회 전자 세트 기본 텍스트

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

해보십시오 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는 spinner_row 레이아웃의 TextView입니다. –

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

배열로 주변을 조금만 돌아다 보면 문제가 해결되었지만 누군가가 도움이되기를 바랍니다. –

관련 문제