2013-10-04 3 views
0

Мне нужно использовать spinner в качестве меню. Но проблема в том, что когда я нажимаю на элемент, он выбирается и показывает в этом месте поведение, которое я хочу избежать. Во-вторых мне нужно, что очень первый элемент всегда должен быть заголовок, независимо от того, какой из элементов был выбран как показано в следующих изображениях:Настройка Android Spinner

  1. блесну в нормальном состоянии

    spinner in normal condition

  2. , когда пользователь вводит кок

when user taps the spinner

Теперь, если пользователь удаляет любой заголовок элемента, его нельзя изменять, но элемент должен быть выбран. Я достиг этого, используя ListView, но я думаю, что должен использовать надлежащие компоненты Android (если это действительно возможно). Спасибо заранее.

Я решил проблему выше, используя следующий код, но вам нужно использовать счетчик.

расположение файла

<RelativeLayout 
     android:id="@+id/header_main" 
     style="@style/layout_f_w" 
     android:layout_alignParentTop="true" 
     android:layout_centerInParent="true" 
     android:background="@color/heading_color" > 

     <TextView 
      android:id="@+id/headingText" 
      style="@style/layout_wrap" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" 
      android:text="MATCH CENTER" 
      android:textColor="@color/text_color_white" 
      android:textSize="15sp" 
      android:textStyle="bold" /> 

     <ImageButton 
      android:id="@+id/matchcenter_menu" 
      style="@style/layout_wrap" 
      android:layout_centerVertical="true" 
      android:layout_toRightOf="@id/headingText" 
      android:background="@android:color/transparent" 
      android:paddingTop="20dp" 
      android:src="@drawable/drp_down_menu" /> 
    </RelativeLayout> 

....

<ListView 
      android:id="@+id/mainscreen_menu" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:background="@android:color/black" 
      android:cacheColorHint="#00000000" 
      android:divider="@android:color/white" 
      android:dividerHeight="1dp" 
      android:drawSelectorOnTop="false" 
      android:listSelector="@android:color/transparent" /> 

Настройка взглядов.

TextView headingText = (TextView)findViewById(R.id.headingText); 
headingText.setTypeface(Utils.getCustomFont(LiveScoreCrowdScreen.this)); 
headingText.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showMatchCenterMenu(v); 
     } 
    }); 

....

matcheCenterMenu = (ImageButton)findViewById(R.id.matchcenter_menu); 
     matcheCenterMenu.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showMatchCenterMenu(v); 
     } 
    }); 

....

mainscreenMenu = (ListView)findViewById(R.id.mainscreen_menu); 

....

public void showMatchCenterMenu(View btn) { 
    ScreenMenuItemsAdapter adapter = null; 
    mainscreenMenu = (ListView)findViewById(R.id.mainscreen_menu); 
    adapter = new ScreenMenuItemsAdapter(LiveScoreCrowdScreen.this, getResources().getStringArray(R.array.livescorecard_menuitems)); 
    mainscreenMenu.setAdapter(adapter); 
    mainscreenMenu.setVisibility(View.VISIBLE); 

    mainscreenMenu.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View row, int position, long id) { 
      CCApplication.isMenuOpened = false; 
       switch (position) { 

        case 0:// Refresh 
         //refresh screen 
         break; 
        case 1:// Highlights 

         //get highlights 

         break; 

        case 2:// Preferences 

         //get preferences 
         break; 
        case 3:// current time 

         // get current time 
         break; 
       } 
      mainscreenMenu.setVisibility(View.GONE); 
     } 
    }); 

} 
+0

В чем ваша попытка говорит? –

+0

@PareshMayani: повторите запрос. Я опубликовал код. –

+0

Вы хотите показать Центр совпадений всегда (после выбора) или что? – Ranjit

ответ

0

только хакерство решение не собственно один:

Снова установите адаптер со счетчиком, когда вы выполнили все работы в стороне onItemSelectedListener().

т.е.
 spinner.setAdapter(your_adapter); 
     spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parentView, 
       View selectedItemView, int position, long id) { 
      //Do works here 

      //atlast again load the same adapter 
      spinner.setAdapter(your_adapter); 
      } 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parentView) { 
      // your code here 
     } 

    }); 

Она будет загружать тот же адаптер после выбора пункта и показать вам, как и раньше.

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