私は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 に追加しようとすると、例外が発生する理由がわかりません。
ご協力いただきありがとうございます。