2016-01-02 5 views
0

Я загружаю ListView со всеми контактными группами. Ниже приводится код, который я написал для этого:Ошибка при загрузке ListView с контактными группами - IllegalArgumentException

код из GroupActivity.java:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_group); 
    Cursor groupCursor = getContentResolver().query(
      ContactsContract.Data.CONTENT_URI, 
      new String[]{ContactsContract.Groups._ID, 
        ContactsContract.Groups.TITLE}, null, null, null 
    ); 
    ListView groupListView = (ListView) findViewById(R.id.contactList); 
    groupListView.setAdapter(new SimpleCursorAdapter(
      this, R.id.contactList, groupCursor, new String[]{ 
      ContactsContract.Groups.TITLE 
    }, new int[] {R.id.list_item}, 0 
    )); 

    groupListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      Toast.makeText(me, "Notification will be sent soon" , Toast.LENGTH_SHORT); 
     } 
    }); 
} 

Вот мое мнение:

<ListView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/contactList" 
    android:layout_centerVertical="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

Довольно просто. Но когда я запустить приложение, я получаю исключение с кодом причины следующим образом:

Caused by: java.lang.IllegalArgumentException: Invalid column title 
     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:167) 
     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137) 
     at android.content.ContentProviderProxy.query(ContentProviderNative.java:413) 
     at android.content.ContentResolver.query(ContentResolver.java:462) 
     at android.content.ContentResolver.query(ContentResolver.java:405) 
     at com.tariq.mysms.GroupActivity.onCreate(GroupActivity.java:26) 
     at android.app.Activity.performCreate(Activity.java:5264) 

Интересно, почему он называет title недействительным столбец, хотя я явно запрошен для этого столбца тоже. Это из-за типа представления, который я использую в аргументе to? Любая помощь приветствуется.

ответ

0

Вы используете неправильный код (URI) - вы используете ContactsContract.Data.CONTENT_URI, но должны быть использованы: ContactsContract.Groups.CONTENT_URI.

Ошибка, которую вы получаете, потому что ContactsContract.Groups.TITLE не является действительной графа для ContactsContract.Data.CONTENT_URI

Смежные вопросы