带有SimpleCursorAdapter的AutoCompleteTextView for Contacts不返回游标实际值

问题描述 投票:0回答:1

我有一个AutoCompleteTextView,它使用SimpleCursorAdapter来过滤输入字段的电子邮件。我有它的工作,虽然有一些deprecated命令,我不知道如何返工。

我唯一的问题是,当我从提供的列表中选择一个值时,我没有选择所选的电子邮件地址,但是类似于以下内容:

android.content.ContentResolver$CursorWrapperInner@13a08d9c

这是我的代码:

final AutoCompleteTextView edt_Contact = (AutoCompleteTextView)findViewById(idTo);

    ContentResolver cr = getContentResolver();
    String[] projection={ContactsContract.CommonDataKinds.Email._ID,ContactsContract.CommonDataKinds.Email.ADDRESS};
    Cursor cursor = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, projection, null, null, null);

    startManagingCursor(cursor);
    String[] from = new String[] { ContactsContract.CommonDataKinds.Email.ADDRESS};
    int[] to = new int[] { android.R.id.text1};
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor, from, to);

    adapter.setFilterQueryProvider(new FilterQueryProvider() {
        public Cursor runQuery(CharSequence constraint) {
            return getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                    new String[] {},
                    ContactsContract.CommonDataKinds.Email.ADDRESS + " LIKE '%" + constraint + "%'",
                    null, null);
        }
    });

    edt_Contact.setAdapter(adapter);

有关如何获取实际选定值以在选择时填充AutoCompleteTextView的任何建议吗?

另外,如上所述,弃用的项目是startManagingCursorSimpleCursorAdapter

android android-contacts autocompletetextview simplecursoradapter
1个回答
1
投票

找到解决方案,我在这里发布它给其他有类似情况的人

我需要添加以下内容

adapter.setStringConversion(1);

我在上面的例子中的最后一行之前添加了它。这改变了结果

Android.content.content resolver$cursor wrapper inner@13啊08的9从

到选定的电子邮件地址。

对于任何使用MultiAutoCompleteTextView做同样事情的人来说也是一个单挑,这个代码也适用于那个......只需在AutoCompleteTextView之前添加Multi,并添加你选择的.setTokenizer

© www.soinside.com 2019 - 2024. All rights reserved.