2013-02-07 45 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; 
    } 

} 
相關問題