如何在MultiAutoCompleteTextView中显示联系人号码而不是显示名称

时间:2013-10-24 10:34:30

标签: android autocomplete contacts

我正在使用MultiAutoCompleteTextView选择多个联系人,它会显示联系人名称,例如ramu,raju,而不是显示联系人姓名,如何在9999999999,8888888888中显示MultiAutoCompleteTextView等联系人号码

我的activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

        <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical">

                <MultiAutoCompleteTextView 
                        android:id="@+id/contacts" 
                        android:textSize="18sp"
                        android:layout_margin="8px"
                        android:layout_width="0px"
                        android:layout_height="wrap_content"
                        android:layout_weight="1" />

    </LinearLayout>
</LinearLayout>

MainActivity.java

package com.example.multiplecontactselect;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.Contacts;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.Filterable;
import android.widget.MultiAutoCompleteTextView;
import android.widget.TextView;

import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {
     @Override
     public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);

         Cursor peopleCursor =       getContentResolver().query(Contacts.People.CONTENT_URI, PEOPLE_PROJECTION, null, null, Contacts.People.DEFAULT_SORT_ORDER);
         ContactListAdapter contactadapter = new     ContactListAdapter(this,peopleCursor);

             MultiAutoCompleteTextView textView = (MultiAutoCompleteTextView) findViewById(R.id.contacts);
     textView.setAdapter(contactadapter);

     textView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
 }


 public static class ContactListAdapter extends CursorAdapter implements Filterable {
     public ContactListAdapter(Context context, Cursor c) {
         super(context, c);
         mContent = context.getContentResolver();
        // System.out.println(mContent);
     }

     @Override
     public View newView(Context context, Cursor cursor, ViewGroup parent) {
         final LayoutInflater inflater = LayoutInflater.from(context);
         final TextView view = (TextView) inflater.inflate(
                 android.R.layout.simple_dropdown_item_1line, parent, false);
         view.setText(cursor.getString(5));
         return view;
     }

     @Override
     public void bindView(View view, Context context, Cursor cursor) {
         ((TextView) view).setText(cursor.getString(5));
     }

     @Override
     public String convertToString(Cursor cursor) {
         return cursor.getString(5);
     }

     @Override
     public Cursor runQueryOnBackgroundThread(CharSequence constraint) {
         if (getFilterQueryProvider() != null) {
             return getFilterQueryProvider().runQuery(constraint);
         }

         StringBuilder buffer = null;
         String[] args = null;
         if (constraint != null) {
             buffer = new StringBuilder();
             buffer.append("UPPER(");
             buffer.append(Contacts.ContactMethods.NAME);
             buffer.append(") GLOB ?");
             args = new String[] { constraint.toString().toUpperCase() + "*" };
         }
//System.out.println(constraint);
Log.d("hai", (String) constraint);
         return mContent.query(Contacts.People.CONTENT_URI, PEOPLE_PROJECTION,
                 buffer == null ? null : buffer.toString(), args,
                 Contacts.People.DEFAULT_SORT_ORDER);
     }

     private ContentResolver mContent;        
 }

 private static final String[] PEOPLE_PROJECTION = new String[] {
     Contacts.People._ID,
     Contacts.People.PRIMARY_PHONE_ID,
     Contacts.People.TYPE,
     Contacts.People.NUMBER,
     Contacts.People.LABEL,
     Contacts.People.NAME,
 };
}

manifestast.xml中的更改

    <uses-permission android:name="android.permission.READ_CONTACTS" />

0 个答案:

没有答案