Используйте элемент в качестве подсказки в 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;
}