0

私はAndroidプロジェクトに取り組んでおり、AutoCompleteEditTextを利用して連絡先のArrayAdapterをバインドしようとしています。しかし、連絡先の配列を返す際に問題が発生しています。

以下は、連絡先と表示名を取得するために使用しているコードです。

public ArrayList<String> getPhoneNumbersAndContactNames()
    {
        ArrayList<String> contacts = new ArrayList<String>();
        try
        {
            ContentResolver contentResolver = context.getContentResolver();

            Uri uri = Data.CONTENT_URI;
            String[] projection = new String[] {PhoneLookup._ID, PhoneLookup.DISPLAY_NAME, PhoneLookup.NUMBER};
            String selection = "*";
            Cursor cursor = contentResolver.query(uri, projection, selection, null, null);
            if (cursor.moveToFirst())
            {
                contacts.add(cursor.getString(cursor.getColumnIndexOrThrow(PhoneLookup.DISPLAY_NAME)));
            }
        }
        catch (SQLiteException ex)
        {
            Log.d("Database All Contacts Exception", ex.toString());
        }
        catch (Exception ex)
        {
            Log.d("Get All Contacts Exception", ex.toString());
        }
        return contacts;
    }

上記のコードでは、例外が発生しています。

IllegalArgumentException: Invalid column number

以下は、配列リストをオートコンプリート編集テキストにバインドしようとしている方法です。

txtPhoneNumberOrContact = (AutoCompleteTextView)findViewById(R.id.call_blacklist_txtPhoneNumberContactName);

ArrayList<String> contacts = common.getPhoneNumbersAndContactNames();

ArrayAdapter<String> contactAdapter = 
        new ArrayAdapter<String>(this, android.R.layout.simple_list_item_activated_1, 
                contacts);

txtPhoneNumberOrContact.setAdapter(contactAdapter);

連絡先のリストを取得して ArrayList に追加しようとすると、例外が発生する理由がわかりません。

ご協力いただきありがとうございます。

4

1 に答える 1