Используйте элемент в качестве подсказки в Spinner (элемент по умолчанию) и спрячьте его в выпадающем меню

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

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());

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;
    }

}

Но он по умолчанию показывает второй последний элемент. И скрывает последний элемент, который я хочу использовать в качестве подсказки. Предложите мне правильное решение.

Ответ 1

Добавьте этот android:prompt="@string/country_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" />

Ответ 2

Вам необходимо реализовать нижеприведенный метод в классе адаптера:

Это поможет вам:

Также для getCount return Count не уменьшает его

 @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;

}