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

} 
相关问题