【问题标题】:How to set a contact's number in an auto complete textview in android?如何在android的自动完成文本视图中设置联系人的号码?
【发布时间】:2012-04-08 22:26:41
【问题描述】:

我有一个代码,我可以从中获取自动完整文本视图中的联系人姓名,这是我的代码

autoContacts=(AutoCompleteTextView)findViewById(R.id.actvContacts);
          Cursor emailCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
            startManagingCursor(emailCursor);
            autoContacts.setAdapter(new SimpleCursorAdapter(this, android.R.layout.simple_dropdown_item_1line, emailCursor, new String[] {Email.DATA1}, new int[] {android.R.id.text1}));
            autoContacts.setThreshold(0);

但是当我单击其中一个名称时,它会在该自动完成文本视图中设置一个文本,如下所示:

android.content.ContentResolver$CursorWrapperInner@44efc9c8

但是这里我想设置具体的电话号码,如何解决这个问题?

【问题讨论】:

    标签: java android autocomplete android-contentprovider


    【解决方案1】:

    你需要使用 setCursorToStringConverter

    设置用于将过滤光标转换为字符串的转换器。 http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html

    在你的情况下,你可以这样做:

    String[] from = new String[] {
            ContactsContract.Contacts.DISPLAY_NAME,
            ContactsContract.CommonDataKinds.Phone.NUMBER
    };
    autoContacts=(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1);
    Cursor emailCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
    startManagingCursor(emailCursor);
    SimpleCursorAdapter adapter =new SimpleCursorAdapter(this, android.R.layout.simple_dropdown_item_1line, emailCursor, from, new int[] {android.R.id.text1}); 
    adapter.setCursorToStringConverter(new CursorToStringConverter() {              
            @Override
            public CharSequence convertToString(Cursor cursor) {
                final int columnIndex = cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER);
                final String str = cursor.getString(columnIndex);
                return str;
            }
    });
    autoContacts.setAdapter(adapter);
    autoContacts.setThreshold(0);
    

    【讨论】:

    • @Nirupoma Saha Chaiti 如果它解决了您的问题,请将答案标记为正确 stackoverflow.com/faq#howtoask – Filipe Batista
    猜你喜欢
    • 2012-02-20
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 2011-06-11
    • 2013-09-23
    • 2011-02-07
    • 1970-01-01
    相关资源
    最近更新 更多