Saturday, 23 May 2015

How to add autocomplete to EditText in Android - AutoCompleteTextView

Background

Everyone must have used EditText to allow use input some text. Ever wondered if such a basic functionality could support autocomplete? Of course it would, it is one of the basic use cases. We will see how to implement it in this post.

AutoCompleteTextView

AutoCompleteTextView is a direct subclass of EditText. We can use this to achieve auto complete feature in Android.

Let's start with the layout. I am going to keep it fairly simple. Just a label denoting what the following text field is for. In this case it would be list of countries. So we are going to provide auto complete for list of countries.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >

    <TextView
        android:id="@+id/labelId"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingTop="10dp"
        android:text="@string/autocomplete_label"/>
    
    <AutoCompleteTextView 
        android:id="@+id/autocompleteId"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/labelId"/>

</RelativeLayout>

Layout would look something like


 Before we proceed to the Java code/Activity lets quickly define list of countries as string array in string resource file.

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">AutocompleteDemo</string>
    <string name="title_activity_main">Auto Complete Demo</string>
    <string name="autocomplete_label">List of Countries</string>

    <string-array name="list_of_countries">
        <item>India</item>
        <item>USA</item>
        <item>China</item>
        <item>Canada</item>
        <item>Germany</item>
        <item>France</item>
        <item>Spain</item>
        <item>Japan</item>
    </string-array>

</resources>

Have listed some random country name. That should suffice for this demo. Now lets code the Activity class.

package com.osfg.autocompletedemo;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

/**
 * @author athakur
 */
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        AutoCompleteTextView acTextView = (AutoCompleteTextView) findViewById(R.id.autocompleteId);
        String[] countriesList = getResources().getStringArray(R.array.list_of_countries);
        ArrayAdapter countryAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,countriesList);
        acTextView.setAdapter(countryAdapter);
    }
}   

And that is it. You should be able to see auto complete now.




Related Links

No comments:

Post a Comment

t> UA-39527780-1 back to top