2016-07-12 4 views
1

을 선택하지 여기에 내 코드회가 첫 번째 항목

Spinner agegroup; 

public void generateAgeGroupSpinner() { 
     final List<AgeGroupModel> ageGroup = new ArrayList<>(); 
     agegroup = (Spinner) findViewById(R.id.ageGroupSpinner); 
     // Spinner click listener 
     agegroup 
       .setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
        @Override 
        public void onItemSelected(AdapterView<?> parent, 
               View view, int position, long id) { 
         // On selecting a spinner item 
         String item = parent.getItemAtPosition(position) 
           .toString(); 

        } 

        @Override 
        public void onNothingSelected(AdapterView<?> parent) { 

        } 
       }); 
     // Spinner Drop down elements 
     ageGroupList.add(new AgeGroupModel(AgeGroup.BELOW18.getId(), AgeGroup.BELOW18.getName())); 
     ageGroupList.add(new AgeGroupModel(AgeGroup.BETWEEN_19_35.getId(), AgeGroup.BETWEEN_19_35.getName())); 
     ageGroupList.add(new AgeGroupModel(AgeGroup.BETWEEN_36_45.getId(), AgeGroup.BETWEEN_36_45.getName())); 
     ageGroupList.add(new AgeGroupModel(AgeGroup.ABOVE45.getId(), AgeGroup.ABOVE45.getName())); 

     // Creating adapter for spinner 
     ArrayAdapter<AgeGroupModel> agedataAdapter = new ArrayAdapter<AgeGroupModel>(
       this, android.R.layout.simple_spinner_item, ageGroup); 

     // Drop down layout style - list view with radio button 
     agedataAdapter 
       .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     // attaching data adapter to spinner 

     agegroup.setAdapter(typeSpinnerAdapterForAge); 
     agegroup.setOnItemSelectedListener(typeSelectedListener); 
     agegroup.setOnTouchListener(typeSpinnerTouchListener); 
} 

설정 회 어댑터 typeSpinnerAdapterForAge의

private SpinnerAdapter typeSpinnerAdapterForAge = new BaseAdapter() { 

     private TextView text; 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      if (convertView == null) { 
       convertView = mInflator.inflate(R.layout.row_spinner, null); 
      } 
      text = (TextView) convertView.findViewById(R.id.spinnerTarget); 
      if (!selected) { 
       if (parent.equals(agegroup)) { 
        text.setText(getText(R.string.age_group)); 
       } 
      } else { 
       text.setText(ageGroupList.get(position).getName()); 
      } 
      return convertView; 
     } 

     @Override 
     public long getItemId(int position) { 
      return position; 
     } 

     @Override 
     public AgeGroupModel getItem(int position) { 
      return ageGroupList.get(position); 
     } 

     @Override 
     public int getCount() { 
      return ageGroupList.size(); 
     } 

     public View getDropDownView(int position, View convertView, 
            ViewGroup parent) { 
      if (convertView == null) { 
       convertView = mInflator.inflate(
         android.R.layout.simple_spinner_dropdown_item, null); 
      } 
      text = (TextView) convertView.findViewById(android.R.id.text1); 
      text.setText(ageGroupList.get(position).getName()); 
      return convertView; 
     } 

     ; 
    }; 

typeSpinnerSearchListener

회 드롭 다운의

첫 번째 값이 처음에 선택되지

private View.OnTouchListener typeSpinnerTouchListener = new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      selected = true; 
      ((BaseAdapter) typeSpinnerAdapter).notifyDataSetChanged(); 
      return false; 
     } 
    }; 
, 다른 i를 선택해야합니다. 그때 코드는 첫 번째 항목에서도 잘 작동합니다

+0

기본적으로 어떤 항목이 선택되어 있습니까? 아마도 첫 번째 항목은'setOnItemSelectedListener'가 호출되지 않는 이유입니다. –

답변

2

기본적으로 첫 번째 항목은 OnItemSelectListener가 다시 호출되지 않는 이유이기 때문에 부울 변수를 전역 적으로두고 조건에 따라 조건을 설정해야합니다 bool 변수에. 이 방법으로 문제를 해결할 수 있다고 생각합니다.

관련 문제