2012-08-13 3 views
0

Я хочу добавить выпадающее меню на панели действий, используя SherlockActionBar. Я нашел этот код в демы:Как установить значок вместо выбранного элемента в spinner для ActionBarSherlock?

Context context = getSupportActionBar().getThemedContext(); 
    ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(
      context, R.array.dropdown_items, R.layout.sherlock_spinner_item); 
    list.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item); 

    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
    getSupportActionBar().setListNavigationCallbacks(list, this); 

То, что я хочу, что пункт меню вертушка быть икона, а не первый/выбранный пункт в выпадающем списке. Как я могу это сделать? Я попытался установить drawable в textview в пользовательский sherlock_spinner_item, а также установить пустой текст, но он не работает. Благодарю. enter image description here

ответ

1

SpinnerAdapter, тип адаптера используется для этого виджета позволяет указать пользовательские макеты для обоих макетов раскрывающихся и выбранных раскладок элементов.

На иллюстрации вы хотели бы использовать другое представление для выбранного макета элемента, который отображал типичный значок. Вероятно, лучше всего написать собственный класс, который реализует SpinnerAdapter для достижения этой функциональности, вместо того, чтобы полагаться на один из встроенных (например, ArrayAdapter).

0

вы должны использовать пользовательский адаптер для блесны, как этого

class customAdapter extends ArrayAdapter<String> { 
    List<String> stringList; 
    Context context; 

    public customAdapter(Context context, int resource, List<String> objects) { 
     super(context, resource, objects); 

     stringList = objects; 
     this.context = context; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE); 
     View rootView = layoutInflater.inflate(R.layout.spinner_item, parent, false); 
     TextView textView = (TextView) rootView.findViewById(R.id.textView); 

     textView.setVisibility(View.GONE); 

     return rootView; 
    } 


    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE); 
     View rootView = layoutInflater.inflate(R.layout.spinner_item, parent, false); 

     TextView textView = (TextView) rootView.findViewById(R.id.textView); 
     ImageView imageView = (ImageView) rootView.findViewById(R.id.imageView); 

     textView.setText(stringList.get(position)); 
     imageView.setVisibility(View.GONE); 

     return rootView; 
    } 

getDropDownView для элемента списка и GetView для заголовка вращателя.