Android 在微调器中使用项目作为提示(默认项目),并将其隐藏在下拉列表中

Android 在微调器中使用项目作为提示(默认项目),并将其隐藏在下拉列表中,android,android-spinner,Android,Android Spinner,我使用下面的代码选择列表的最后一项作为微调器的提示(即微调器中的默认选定项),并试图从下拉菜单中隐藏它 List<String> rfpType = new ArrayList<>(); rfpType.add("Job"); rpType.add("Talent"); rfpType.add("Vendor"); rfpType.add("Sponsor"); rfpType.add("RFP Title"); HintAdapter dataAdapter1 =

我使用下面的代码选择列表的最后一项作为微调器的提示(即微调器中的默认选定项),并试图从下拉菜单中隐藏它

List<String> rfpType = new ArrayList<>();
rfpType.add("Job");
rpType.add("Talent");  
rfpType.add("Vendor");
rfpType.add("Sponsor");
rfpType.add("RFP Title");

HintAdapter dataAdapter1 = new HintAdapter(getActivity(), android.R.layout.simple_list_item_1, rfpType);
dataAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerRFPType.setAdapter(dataAdapter1);
spinnerRFPType.setSelection(dataAdapter1.getCount());
List rfpType=new ArrayList();
rfpType.add(“作业”);
rpType.添加(“人才”);
RFP类型。添加(“供应商”);
RFP类型。添加(“发起人”);
RFP类型。添加(“RFP标题”);
HintAdapter dataAdapter1=新的HintAdapter(getActivity(),android.R.layout.simple\u list\u item\u 1,rfpType);
dataAdapter1.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
喷丝头RfpType.setAdapter(数据适配器1);
spinnerRFPType.setSelection(dataAdapter1.getCount());
HintAdapter

class HintAdapter extends ArrayAdapter<String>{

    public HintAdapter(Context context, int theLayoutResID , List<String> list){
        super(context, theLayoutResID, list);
    }

    @Override
    public int getCount() {
        // don't display last item. It is used as hint.
        int count = super.getCount();
        return count > 0 ? count-1 : count;
    }

}
类HintAdapter扩展了ArrayAdapter{
公共HintAdapter(上下文上下文,int-theLayoutResID,列表){
超级(上下文、LayoutResid、列表);
}
@凌驾
public int getCount(){
//不显示最后一项。它用作提示。
int count=super.getCount();
返回计数>0?计数-1:计数;
}
}

但它将最后一项显示为默认项。并隐藏我要用作提示的最后一项。给我一个正确的解决方案

将此
android:prompt=“@string/country\u prompt”
添加到微调器中

      <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/country_arrays"
        android:prompt="@string/country_prompt" />

将此
android:prompt=“@string/country\u prompt”
添加到微调器中

      <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/country_arrays"
        android:prompt="@string/country_prompt" />

您需要在适配器类中实现以下方法:

它将帮助您:

对于getCount返回计数,也不要减少它

 @Override
 public View getDropDownView(int position, View convertView,
        ViewGroup parent) 
 {
    LayoutInflater inflater = getLayoutInflater(null);
    convertView = inflater.inflate(theLayoutResID, parent,
            false);
    convertView= null;

    if(position == list.size() - 1)
    {
        holder.textView.setVisibility(View.GONE);
        convertView= holder;
    }
    else{
         convertView= super.getDropDownView(position, null, parent);
    }
    return convertView;

}

您需要在适配器类中实现以下方法:

它将帮助您:

对于getCount返回计数,也不要减少它

 @Override
 public View getDropDownView(int position, View convertView,
        ViewGroup parent) 
 {
    LayoutInflater inflater = getLayoutInflater(null);
    convertView = inflater.inflate(theLayoutResID, parent,
            false);
    convertView= null;

    if(position == list.size() - 1)
    {
        holder.textView.setVisibility(View.GONE);
        convertView= holder;
    }
    else{
         convertView= super.getDropDownView(position, null, parent);
    }
    return convertView;

}

更改喷丝头RFPTYPE.setSelection(dataAdapter1.getCount()-1);到spinnerRFPType.setSelection(dataAdapter1.getCount());嘿,它按照预期工作..我写了与上面相同的代码没有变化。检查屏幕截图。而这一个@shakebayaz我也认为它应该起作用。但不幸的是,事实并非如此。知道如何更正吗?@h8pathak zip并将您的代码发送给我。它不可能不起作用更改spinnerRFPType.setSelection(dataAdapter1.getCount()-1);到spinnerRFPType.setSelection(dataAdapter1.getCount());嘿,它按照预期工作..我写了与上面相同的代码没有变化。检查屏幕截图。而这一个@shakebayaz我也认为它应该起作用。但不幸的是,事实并非如此。知道怎么更正吗?@h8pathak-zip并将您的代码发送给我。它不可能不起作用。这不是我想要的解决方案。这还需要一行代码才能工作。这不是我想要的解决方案。这还需要一行代码才能工作。