2014-02-05 6 views
4

Я использовал пользовательский адаптер spinner для цвета spinner в приложении для Android. Падение работает нормально. Но как только я выбираю цвет (элемент) из счетчика, он не выбирается. Также мне не нужно показывать выбранный элемент по мере его выбора. Я хочу только выделить выбранный цвет, не отображая его.Элементы не выбираются в spinner (Custom Spinner Adapter)

Ниже код для моего CustomSpinnerAdapter:

@Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     TextView rowView=null; 
     if(convertView == null){ 
      convertView=inflater.inflate(R.layout.spinner_layout, null); 
     } 
     rowView=(TextView) convertView.findViewById(R.id.spinnerColorview); 
     rowView.setBackgroundColor(Color.parseColor(itemList.get(position))); 

     return convertView; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     TextView rowView=null; 
     if(convertView == null){ 
      convertView=inflater.inflate(R.layout.spinner_layout, null); 
     } 
     rowView=(TextView) convertView.findViewById(R.id.spinnerColorview); 
     rowView.setBackgroundColor(Color.parseColor(itemList.get(position))); 

     return convertView; 

    } 

EDIT: Дополнительная информация

Моя выпадающий список в блесны не выбираемой. Когда я нажал на счетчик, он отображает список. Но когда я выбираю один элемент из этого списка, ничего не происходит. Я не могу идентифицировать выбранный элемент.

Когда я печатаю позицию внутри метода getView(int position, View convertView, ViewGroup parent), он печатает все идентификаторы предметов.

Мне нужно только идентифицировать выбранный элемент, и мне не нужно отображать его в верхней части счетчика, как это обычно бывает. Это мой spinner_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="40dp" 
    android:clickable="true" 
    android:orientation="horizontal" 
    android:paddingLeft="40dp" 
    tools:context=".MainActivity" > 

    <TextView 
     android:id="@+id/spinnerColorview" 
     android:layout_width="200px" 
     android:layout_height="50px" 
     android:clickable="true" 
     android:gravity="center_vertical" 
     > 
    </TextView> 
</LinearLayout> 
+0

Непонятно, что вам нужно? – keshav

+0

@keshav Мой выпадающий список нельзя выбрать. Он отображает все элементы в виде списка, но я не могу выбрать элемент. Это одно, что мне нужно исправить. Следующий, как правило, отображает выбранный элемент в верхней части экрана. Мне нужно удалить это. Просто мне нужно только получить выделенный идентификатор элемента. – IBunny

+0

Я столкнулся с аналогичной проблемой. Как вы это решили? – Srikanth

ответ

0

Я добавил style="?android:attr/spinnerItemStyle" к TextView, и она работает. Не уверен, что лучшие решения, но это начало и быстрое решение.

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     style="?android:attr/spinnerItemStyle" 
     android:id="@+id/TextView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="8dp" 
     android:ellipsize="end" 
     android:gravity="left|center" 
     android:singleLine="true" 
     android:text="Option One" 
     android:textColor="@color/Petrol" 
     android:textSize="@dimen/font_size_big" 
     android:textStyle="bold"/> 
10

Вам нужно добавить android:descendantFocusability="blocksDescendants" в файле макета обычая Spinner или в каждом из видов добавить android:focusable="false". Если какой-либо вид в пользовательском Spinner имеет focusable, тогда onitemclick не работает.

+0

вы экономите мой день, большое спасибо – Sanath

+0

Спасибо! Это также решило мою проблему, когда я не мог открыть счетчик, щелкнув элемент с помощью настраиваемого макета/адаптера. – Shane

Смежные вопросы