Реализация строки поиска по массиву в спинере

Есть спинер, который в виде выпадающего списка выдает список людей, содержащихся в массиве. Каким образом можно реализовать поиск по словам в этом самом спинере / списке ? (Поиск типа: вводишь первые буквы - выдает все совпадения, которые начинаются с этих букв).

Массив:

public synchronized void fillNameStocks() {
        String[] tempArr = new String[arrayListMols.size() + 1];
        tempArr[0] = "Не выбрано";
        for (int i = 0; i < arrayListMols.size(); i++) {
            tempArr[i + 1] = arrayListMols.get(i).Name;
        }
        MyArrayAdapter<String> adapter = new MyArrayAdapter<String>(this, R.layout.spinner_item, tempArr);
        spinnerNamesOfMols.setAdapter(adapter);
        spinnerNamesOfMols.setSelection(0);
        spinnerNamesOfMols.setOnItemSelectedListener(new SpinnerActivity());
    }

Класс со спинером:

class SpinnerActivity extends Activity implements AdapterView.OnItemSelectedListener {
        public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
            Log.w("Список", "Выбрана позиция : " + pos);
            indexOfIdToSendNextAct = pos - 1;
        }
    }

UPD: Разметка спинера:

<Spinner
        android:id="@+id/spinner4"
        android:layout_width="271dp"
        android:layout_height="37dp"
        android:layout_marginTop="8dp"
        android:spinnerMode="dialog"
        app:layout_constraintStart_toStartOf="@+id/textView19"
        app:layout_constraintTop_toBottomOf="@+id/textView19">
        

    </Spinner>

Ответы (2 шт):

Автор решения: Cypher

Это легко реализовать с помощью AutoCompleteTextView

ezgif-com-gif-maker-1.gif

Создаем массив слов в strings.xml:

<string-array name="names_array">
    <item>Александр</item>
    <item>Алексей</item>
    <item>Антон</item>
    <item>Борис</item>
    <item>Владимир</item>
    <item>Владислав</item>
    <item>Иван</item>
    <item>Илья</item>
</string-array>

Activity:

class SortActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_sort)

    val adapter = ArrayAdapter(
        this,
        android.R.layout.simple_list_item_1,
        resources.getStringArray(R.array.names_array)
    )
    autoCompleteTextView.setAdapter(adapter)

    button.setOnClickListener {
        Toast.makeText(this, autoCompleteTextView.text, LENGTH_SHORT).show()
    }
}
}

R.layout.activity_sort:

<?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"
android:orientation="vertical">

<AutoCompleteTextView
    android:id="@+id/autoCompleteTextView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="20dp"
    android:hint="Начните вводить имя" />

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Ок" />
→ Ссылка
Автор решения: Сергей Беляков

Нашел в Google библиотеку, которая позволяет просто изменить одну строку (напишите com.toptoche.searchablespinnerlibrary.SearchableSpinner вместо Spinner) и добавить соответствующую зависимость в проект, и все, проблема решена.

Ссылка на либу

→ Ссылка