I already did something similar in the past, which I did:
Note: you will get autocomplete after writing two characters
AutoCompleteView is used in the layout file, basically it is an EditText with a drop-down list that appears when you enter it. The XML file in your example is as follows:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <AutoCompleteTextView android:id="@+id/mmWhoNo" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="To...." > </AutoCompleteTextView> </LinearLayout>
To create the custom view used in AutoCompleteView, you must declare another custxview.xml .xml file and it will look like this:
<TextView android:id="@+id/ccontName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textColor="#A5000000" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/ccontNo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@id/ccontName" android:text="Medium Text" android:textColor="#A5000000" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/ccontType" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@id/ccontNo" android:layout_alignParentRight="true" android:layout_marginRight="14dp" android:text="Small Text" android:textColor="#A5000000" android:textAppearance="?android:attr/textAppearanceSmall" />
now In your activity:
public class ContactActivity extends Activity { private ArrayList<Map<String, String>> mPeopleList; private SimpleAdapter mAdapter; private AutoCompleteTextView mTxtPhoneNo; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mPeopleList = new ArrayList<Map<String, String>>(); PopulatePeopleList(); mTxtPhoneNo = (AutoCompleteTextView) findViewById(R.id.mmWhoNo); mAdapter = new SimpleAdapter(this, mPeopleList, R.layout.custcontview ,new String[] { "Name", "Phone" , "Type" }, new int[] { R.id.ccontName, R.id.ccontNo, R.id.ccontType }); mTxtPhoneNo.setAdapter(mAdapter); } public void PopulatePeopleList() { mPeopleList.clear(); Cursor people = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); while (people.moveToNext()) { String contactName = people.getString(people.getColumnIndex( ContactsContract.Contacts.DISPLAY_NAME)); String contactId = people.getString(people.getColumnIndex( ContactsContract.Contacts._ID)); String hasPhone = people.getString(people.getColumnIndex( ContactsContract.Contacts.HAS_PHONE_NUMBER)); if ((Integer.parseInt(hasPhone) > 0)) {
Do not forget to add
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
in your manifest
source share