2013-02-07 4 views
3

스피너 목록에 10 개의 항목이 있다고 가정 해보십시오. 항목 번호 3이 이미 선택되어 있습니다. 이제는 사용자가 자신의 선택을 변경하고 싶을 때, 이미 선택되어있는 항목 (항목 번호 3)을 알려주고 싶습니다. 나는 체크 마크를 통해 이것을 달성하거나 어떤 종류의 배경이나 유사한 방식으로 설정하고 싶다.미리 선택된 스피너 항목 강조 표시

아무도이 문제로 저를 도울 수 있습니까?

답변

0

이 기능에는 맞춤 어댑터를 사용합니다. BaseAdapter에서 연장하고 SpinnerDroppdown 컨트롤에 대한 조회수를 부풀려주세요.

List<String> stagesValues = new ArrayList<>(stagesResults.values()); 
mStageSpn.setAdapter(new DropdownAdapter(mContext, stagesValues, mStageSpn)); 

public class DropdownAdapter extends BaseAdapter { 

    private final LayoutInflater mInflater; 
    private List<String> mData; 
    private Spinner mStageSpn; 

    public DropdownAdapter(Context context, List<String> data, Spinner stageSpn) { 
     mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     mData = data; 
     mStageSpn = stageSpn; 
    } 

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

    @Override 
    public Object getItem(int arg0) { 
     return null; 
    } 

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View view = mInflater.inflate(android.R.layout.simple_spinner_item, null); 
     ((TextView) view.findViewById(android.R.id.text1)).setText(mData.get(mStageSpn.getSelectedItemPosition())); 

     return view; 
    } 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     View view = mInflater.inflate(R.layout.spinner_item, null); 
     if (mStageSpn.getSelectedItemPosition() == position) 
      view.setBackgroundColor(Color.RED); 
     ((TextView) view.findViewById(R.id.text_id)).setText(mData.get(position)); 

     return view; 
    } 

} 
관련 문제