• 0
  • Contact Me: alexbashy9001@gmail.com

Text Fields and Auto Complete Text View #4

Современные пользователи приложений – очень требовательны. И каждый раз когда мы требуем от них ввести какую-либо информацию – это воспринимается как не большая проблема. Для пользователя это воспринимается как:

“Вот сейчас нужно сюда тапнуть, потом на клавиатуре набрать текст – а потом еще и отправить”

Для пользователя это лишние действия. Нам как разработчикам нужно сделать использование нашего приложения максимально удобным для пользователя. Поэтому максимально где это возможно вместо стандартного Text Fields нужно использовать Text Fields в формате Auto Complete Text View

Идеальное приложение – то, в котором вообще не нужно ничего водить, а всю информацию пользователь выбирает в Auto Complete Text View.

Что же такое Auto Complete Text View?

Auto Complete Text View – поле, в котором пользователь выбирает необходимую информацию.

Внимание! Выбирает, а не вводит

Для создания такого поля нам нужно в xml шаблоне, внутри Text Input Layout разместить Auto Complete Text View

<com.google.android.material.textfield.TextInputLayout
android:id="@+id/sectionEnterCity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
android:layout_margin="10dp"
app:boxBackgroundColor="@android:color/black"
app:startIconTint="@android:color/white"
app:endIconTint="@android:color/white"
app:boxStrokeColor="@android:color/white"
android:hint="@string/labelCity"
app:hintTextColor="@android:color/white"
app:startIconDrawable="@drawable/location"
app:startIconContentDescription="@string/enterCity"
app:boxStrokeWidthFocused="4dp"
app:helperTextEnabled="true"
app:helperText="@string/enterCity"
app:helperTextTextColor="@android:color/white"
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu">

<AutoCompleteTextView
android:id="@+id/autoComplete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="none"
android:textColor="@android:color/white"/>



</com.google.android.material.textfield.TextInputLayout>

Для оформления Auto Complete Text View нам нужно подключить стили

style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"

После этого нам нужно создать макет оформления каждого пункта для выбора. Для этого мы создаём отдельный xml файл в папке layout

<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:ellipsize="end"
android:maxLines="1"
android:textAppearance="?attr/textAppearanceSubtitle1"/>

Далее нам нужно перейти в класс Activity.

В первую очередь нам нужно создать массив с данными, которые мы и будем выгружать в Auto Complete Text View.

val items = listOf("Rostov-on-Don", "New York", "Los Angeles", "Tokyo")

Конечно же в реальном примере мы будем выгружать информацию не статично, а скорее всего из базы данных на сервере, после чего будем импортировать в локальную базу данных. А уже из неё мы будем получать данные в массив. Данные из которого и будем выгружать в Auto Complete Text View.

Далее мы создаем объект классического адаптера коллекции для наполнения Auto Complete Text View информацией для выбора

val adapter = ArrayAdapter(this, R.layout.list_item, items)

Здесь мы указываем xml шаблон для каждого элемента выбора и устанавливаем ту коллекцию, в которой содержатся эти элементы(item)

После чего мы устанавливаем для нашего Auto Complete Text View созданный адаптер

binding?.autoComplete?.setAdapter(adapter)

Теперь наш Auto Complete Text View начнет функционировать

Наш код в классе Activity будет выглядеть вот так:

val items = listOf("Rostov-on-Don", "New York", "Los Angeles", "Tokyo")
val adapter = ArrayAdapter(this, R.layout.list_item, items)

binding?.autoComplete?.setAdapter(adapter)

ДОМАШНЕЕ ЗАДАНИЕ

Создайте Auto Complete Text View с выбором фильмов. Результат в формате видео пришлите на Whats App – +79612777611

Leave a Reply

Your email address will not be published. Required fields are marked *