Предположим, полные данные Spinner - это список.
Initialize
listCurrent=list.clone();
установить ArrayAdapter на счетчике с помощью
ArrayAdapter<String> adapter=new ArrayAdapter(context, android.R.layout.simple_spinner_item_1, listCurrent);
overrideСобытие onTouch, откройте диалоговое окно, содержащее текст редактирования, скажем editText, и кнопку при нажатии, в противном случае выберите элемент, нажмите кнопку диалогового окна, получите строку из editText, отфильтруйте результаты и сбросьте адаптер, вызвав:
listCurrent= filter(list, text);
adapter.notifyDataSetChanged();