使用异步任务加载 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找到
我正在获取 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找到