Create An Android AutoCompleteTextview Programmatically in Kotlin




Target

Hello Readers! In this post, we are going to learn about how to use android autoCompleteTextview programmatically in kotlin in any android application. We will also learn to add autoCompleteTextview in linearLayout programmatically in android application.

Output

Tutorialwing Android Dynamic AutoCompleteTextVie Output Android AutoCompleteTextView programmatically in kotlin

Tutorialwing Android Dynamic AutoCompleteTextVie Output

Getting Started

At first, we will create android project. Then, we will create and use autoCompleTextView programmatically in kotlin file.

1. Creating New Project in Kotlin

Follow the steps below to create new project. Please ignore the steps if you have already created a new project.

Step Description
1. Open Android Studio.
2. Go to File => New => New Project. Write application name as DynamicAutoCompleteTextView. Then, check Include Kotlin Support and click next button.
3. Select minimum SDK you need. However, we have selected 17 as minimum SDK. Then, click next button
4. Then, select Empty Activity => click next => click finish.
5. At this point, You will get a newly created android project successfully.

Now, we will modify xml and other file to use AutoCompleteTextView programmatically in kotlin file.

2. Modify Values Folder

Open res/values/strings.xml file. Then, add below code into it.

<resources>
	<string name="app_name">DynamicAutoCompleteTextView</string>
	<string name="hint">Please type something...</string>
	<string name="entered_text">Entered text:</string>

	<string-array name="countries_array">
		<item>India</item>
		<item>Albania</item>
		<item>Algeria</item>
		<item>American Samoa</item>
		<item>Andorra</item>
		<item>Angola</item>
		<item>Anguilla</item>
		<item>Antarctica</item>
	</string-array>

</resources>

In strings.xml file, we have defined an array of strings, i.e. countries_array, that will be used to show as completion suggestions in the autoCompleteTextview.

3. Modify Layout Folder

Open res/layout/activity_main.xml file. Then, add below code into it.

<?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">

	<LinearLayout
		android:id="@+id/rootContainer"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:orientation="vertical">

	</LinearLayout>

	<Button
		android:id="@+id/button"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="Submit"/>

</LinearLayout>

In activity_main.xml file, we have defined a button and linearLayout, with id rootContainer, that will be used as container for the autoCompleteTextview widget created programmatically in the application.

4. Create Android AutoCompleteTextview Programmatically / Dynamically in Kotlin

Open app/src/main/java/com.tutorialwing.dynamicautocompletetextview/MainActivity.kt file. Then, add below code into it.

package com.tutorialwing.dynamicautocompletetextview

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.ViewGroup
import android.widget.*

class MainActivity : AppCompatActivity() {

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

        // Create AutoCompleteTextView Dynamically
        val textView = AutoCompleteTextView(this)
        val layoutParams = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
        textView.layoutParams = layoutParams
        layoutParams.setMargins(30, 30, 30, 30)
        textView.setHint(R.string.hint)

        // Get the string array
        val countries = resources.getStringArray(R.array.countries_array)
        // Create the adapter and set it to the AutoCompleteTextView
        val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, countries)
        textView.setAdapter(adapter)

        val button = findViewById<Button>(R.id.button)
        button?.setOnClickListener {
            val text = getString(R.string.entered_text) + " " + textView.text
            Toast.makeText(this@MainActivity, text, Toast.LENGTH_SHORT).show()
        }

        val linearLayout = findViewById<LinearLayout>(R.id.rootContainer)
        // Add AutoCompleteTextView to LinearLayout
        linearLayout?.addView(textView)
    }
}

We have defined an autoCompleteTextview programmatically in kotlin file i.e. MainActivity.kt file. Then, we have set layout params, margins and hint text. After that, we have created an adapter using array list (i.e. countries_array) , defined in strings.xml. Then, we have set this adapter in the autoCompleteTextview. Then, we have added this autoCompleteTextView widget in linearLayout, having id rootContainer. We have also set a click listener to show a toast message, displaying the text entered in the autoCompleteTextview.

AndroidManifest.xml file

Code inside src/main/AndroidManifest.xml file is –

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.tutorialwing.dynamicautocompletetextview"
		  xmlns:android="http://schemas.android.com/apk/res/android">

	<application
		android:allowBackup="true"
		android:icon="@mipmap/ic_launcher"
		android:label="@string/app_name"
		android:roundIcon="@mipmap/ic_launcher_round"
		android:supportsRtl="true"
		android:theme="@style/AppTheme">
		<activity android:name=".MainActivity">
			<intent-filter>
				<action android:name="android.intent.action.MAIN"/>

				<category android:name="android.intent.category.LAUNCHER"/>
			</intent-filter>
		</activity>
	</application>

</manifest>

When we run the program, we will get output as shown above.

That’s end of our tutorial on Creating Android AutoCompleteTextview Programmatically in Kotlin.