2014-09-26 27 views
1

我在我的一項活動中使用微調。問題是它顯示了它的零索引元素作爲標題。因此它出現兩次,第一次出現在標題中,第二次出現在微調器的第一個元素上。我不想讓選中的選項在Spinner中的標題下拉,因爲它已經被選中了,那麼它是如何使用它作爲Spinner的第一選項。我想要在標題和Spinner列表中選項的其餘部分選中選項。看看我的代碼 -Spinner標題顯示其零位元素

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:gravity="center_horizontal|center_vertical" 
android:orientation="horizontal" > 
<Spinner 
    android:id="@+id/spinner" 
    android:layout_width="wrap_content" 
    android:layout_height="50dp" 
    android:layout_gravity="center_horizontal|center_vertical" /> 
</LinearLayout> 

和適配器類是 -

public class SpinnerAdapter extends BaseAdapter { 
Context mContext; 
List<SpinnerContent> list; 
public SpinnerAdapter(Context context, List<SpinnerContent> list) { 
    mContext = context; 
    this.list = list; 
} 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    SpinnerContent item = list.get(position); 
    if (convertView == null) { 
     LayoutInflater inflator = (LayoutInflater) mContext 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflator.inflate(R.layout.spinner_item_row_image, 
       null); 
    } 
    TextView tvTitle = (TextView) convertView 
      .findViewById(R.id.tvSpinnerItem); 
    ImageView imgSpinnerContent = (ImageView) convertView 
      .findViewById(R.id.imgSpinnerItem); 
    if (item.getCollectionName().equalsIgnoreCase("Home")) { 
     imgSpinnerContent.setVisibility(View.VISIBLE); 
     imgSpinnerContent.setImageResource(R.drawable.icon_home); 
     tvTitle.setText("Home"); 
     tvTitle.setTextColor(mContext.getResources().getColor(
       R.color.white_text)); 
     convertView.setBackgroundColor(mContext.getResources().getColor(
       R.color.text_color_light_gray)); 
    } else if (item.getCollectionName().equalsIgnoreCase("One Level Up")) { 
     imgSpinnerContent.setVisibility(View.VISIBLE); 
     imgSpinnerContent.setImageResource(R.drawable.icon_spinner_up); 
     tvTitle.setText("One Level Up"); 
     tvTitle.setTextColor(mContext.getResources().getColor(
       R.color.white_text)); 
     convertView.setBackgroundColor(mContext.getResources().getColor(
       R.color.text_color_light_gray)); 
    } else if (item.getCollectionName().equalsIgnoreCase("One Level Down")) { 
     imgSpinnerContent.setVisibility(View.VISIBLE); 
     imgSpinnerContent.setImageResource(R.drawable.icon_spinner_down); 
     tvTitle.setText("One Level Down"); 
     tvTitle.setTextColor(mContext.getResources().getColor(
       R.color.white_text)); 
     convertView.setBackgroundColor(mContext.getResources().getColor(
       R.color.text_color_light_gray)); 
    } else { 
     if (position == 0) { 
      convertView.setBackgroundColor(mContext.getResources() 
        .getColor(android.R.color.transparent)); 
      imgSpinnerContent.setVisibility(View.GONE); 
      tvTitle.setText(item.getCollectionName()); 
      tvTitle.setTextColor(mContext.getResources().getColor(
        R.color.white_text)); 
     } else { 
      tvTitle.setText(item.getCollectionName()); 
      applyTheme(convertView, mContext); 
     } 
    } 
    return convertView; 
} 

我怎樣才能實現這一目標。我希望列表中的第一個元素(將其傳遞給微調器)作爲標題,但不想將其顯示爲微調器的第一個元素。 在此先感謝。

+0

我認爲你必須使用Spinner提示屬性來標題,而不是選項列表包含標題。 – 2014-09-26 06:55:28

回答

0

它不可能與微調。微調器總是顯示第一個元素作爲標題。如果你想添加標題,那麼你最好在第0位顯示你的標題。在驗證部分中,如果用戶選擇第0位置設置驗證消息給用戶。

0

我認爲你應該使用凱文克里斯解決方案。

如果你想實現然後嘗試下面的trick.I從來沒有使用過,但它應該工作。

spinner.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      View convertView = spinner.getSelectedView(); 
      View selectedView= adapter.getDropDownView(selectedPosition, convertView, spinner); 
      selectedView.setVisibility(View.GONE); 
     } 
    }); 
+0

不工作,它將刪除微調器的標題。 – 2014-09-29 15:00:31