使用异步任务加载 phone 个联系人

load phone contacts with async task

我正在获取 phone 联系人并给出了问题,但是当我使用异步任务时,应用程序停止工作。

这是我的错误:

java.lang.IllegalArgumentException: Can't have a viewTypeCount < 1

我像这样在 onCreate 方法中调用异步任务:

new displayContacts().execute();

我做错了什么?

我猜想 getViewTypeCount return 是此适配器可以 return 的不同类型视图的数量。视图类型应该只是 return 1.

public int getItemViewType(int position) {
    return 0;
}

public int getViewTypeCount() {
    return 1;
}

您遇到的问题与您的 Adapter 有关,而不是您的 AsyncTask..

如果您在适配器中重写 getViewTypeCount(),您应该确保 return 大于 1。此方法用于了解您的列表应具有多少种视图类型。在您的情况下我想这将是一种类型,而不是你使用 getCount() 最终可以 return 0

public int getViewTypeCount() {
    // if you have more than 1 view type than make sure it's > 1                 
    return 1;
}

您还在查询 ContactsContract.CommonDataKinds.Phone,其中包含 phone 个数字。因此,如果用户在其中有 3 个条目,table 您将列出 3 次相同的条目name.. 你应该查询 ContactsContract.Contacts

请参阅此 Documentation 以更好地了解联系提供商。

你根据官方文档在这里how to retrieve contacts list找到