Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android在自动完成文本视图中获取电子邮件建议_Android_Email_Autocompletetextview - Fatal编程技术网

android在自动完成文本视图中获取电子邮件建议

android在自动完成文本视图中获取电子邮件建议,android,email,autocompletetextview,Android,Email,Autocompletetextview,我想使用自动完成文本视图在联系人中获取电子邮件作为建议。 我目前收到的联系人姓名、联系人id和号码如下 @SuppressWarnings("deprecation") public void PopulatePeopleList() { mPeopleList.clear(); try { Cursor phones = getContentResolver().query( Cont

我想使用自动完成文本视图在联系人中获取电子邮件作为建议。 我目前收到的联系人姓名、联系人id和号码如下

@SuppressWarnings("deprecation")
    public void PopulatePeopleList() {

        mPeopleList.clear();

        try {

            Cursor phones = getContentResolver().query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                    null, null, null);

            while (phones.moveToNext()) {

                String num = phones
                        .getString(phones
                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                num = num.replaceAll(" ", "");
                String name = phones
                        .getString(phones
                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                String id = phones
                        .getString(phones
                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));

                Map<String, String> NamePhoneType = new HashMap<String, String>();

                NamePhoneType.put("Name", name);
                NamePhoneType.put("Phone", num);
                NamePhoneType.put("Type", id);
                mPeopleList.add(NamePhoneType);

                // Add ArrayList names to adapter

            }

        } catch (Exception e) {
            Log.i("AutocompleteContacts", "Exception : " + e);
        }

        // startManagingCursor(people);
    }
@SuppressWarnings(“弃用”)
public void PopulatePeopleList(){
mpeoplist.clear();
试一试{
Cursor=getContentResolver().query(
ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,null,
空,空,空);
while(phones.moveToNext()){
String num=电话
.getString(电话)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.NUMBER));
num=num.replaceAll(“,”);
字符串名称=电话
.getString(电话)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.DISPLAY_NAME));
字符串id=电话
.getString(电话)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.CONTACT_ID));
Map NamePhoneType=newhashmap();
NamePhoneType.put(“Name”,Name);
NamePhoneType.put(“Phone”,num);
NamePhoneType.put(“Type”,id);
mpeoplist.add(NamePhoneType);
//将ArrayList名称添加到适配器
}
}捕获(例外e){
Log.i(“自动完成联系人”,“异常:+e”);
}
//开始管理光标(人);
}

已经有一段时间了,但是对于那些为同一问题寻求解决方案的人,我写了一篇文章,它可以给你一个完整的答案,或者给你一个自己编写解决方案的想法

如果链接断开,我将在此处附加源代码:

/**
 * Created by Rany Albeg Wein on 24/01/2016.
 */
public class EmailCompletionEditText extends MultiAutoCompleteTextView {
    private ContentResolver mContentResolver;

    public EmailCompletionEditText(Context context) {
        super(context);
        init(context);
    }

    public EmailCompletionEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    public EmailCompletionEditText(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context);
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public EmailCompletionEditText(Context context, AttributeSet attrs, int defStyleAttr,
                                   int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        init(context);
    }

    private void init(Context context) {
        mContentResolver = context.getContentResolver();

        setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());

        final String[] from = new String[]{ContactsContract.Contacts.DISPLAY_NAME,
                                           ContactsContract.CommonDataKinds.Email.ADDRESS,
                                           ContactsContract.Contacts.Photo.PHOTO_URI};

        final int[] to = new int[]{R.id.tv_contact_name,
                                   R.id.tv_contact_email,
                                   R.id.iv_contact_photo};

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(context, R.layout.contact_row, null, from, to, 0) {
            @Override
            public CharSequence convertToString(Cursor cursor) {

                final int emailIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS);
                return cursor.getString(emailIndex);
            }
        };

        adapter.setFilterQueryProvider(new FilterQueryProvider() {
            @Override
            public Cursor runQuery(CharSequence constraint) {
                if (constraint == null) {
                    return null;
                }

                String query = constraint.toString();

                final String selection = ContactsContract.Contacts.DISPLAY_NAME
                        + " LIKE ? "
                        + " OR "
                        + ContactsContract.CommonDataKinds.Email.ADDRESS
                        + " LIKE ? ";

                String[] selectionArgs = new String[]{"%" + query + "%"
                        , "%" + query + "%"};

                return mContentResolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, selection, selectionArgs, null);

            }
        });

        setAdapter(adapter);
    }
}

你能在设置AutoCompleteTextView的地方发布代码吗?您只需将此数据放入适配器。此数据在autocompleteTextview中可以访问,但我想在autocompleteTextview中获取电子邮件地址,即我联系人中的电子邮件。虽然此链接可能会回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能无效。-据此编辑。非常感谢。