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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <RelativeLayout xmlns:android= "http://schemas.android.com/apk/res/android" 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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); } } |
No comments:
Post a Comment