【发布时间】:2019-08-26 14:48:07
【问题描述】:
我想在 Android 中构建一个自定义的 ListView 联系人信息。
Android 文档布局是一个非常简单的示例: https://developer.android.com/training/contacts-provider/retrieve-names#Permissions
它会从您的联系人中获取显示名称并将其显示在列表视图中。给 CursorLoader 的投影是:
private val PROJECTION: Array<out String> = arrayOf(
ContactsContract.Contacts._ID,
ContactsContract.Contacts.LOOKUP_KEY,
ContactsContract.Contacts.DISPLAY_NAME
)
然后映射到简单的光标:
private val FROM_COLUMNS: Array<String> = arrayOf(
ContactsContract.Contacts.DISPLAY_NAME
)
我还想在列表视图中添加一个电子邮件地址。这可以通过文档使用的 SimpleCursorAdapter 实现吗?
我尝试更改投影以投影电子邮件地址:
private val PROJECTION: Array<out String> = arrayOf(
ContactsContract.Contacts._ID,
ContactsContract.Contacts.LOOKUP_KEY,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Email.DISPLAY_NAME
)
但是,当我这样做时,我得到了一个例外:
java.lang.IllegalArgumentException:无效的列数据4
我意识到从联系人到电子邮件的映射是一对多的。那是我的问题吗?我可以投影“主要”电子邮件地址吗?
【问题讨论】:
标签: android android-contacts simplecursoradapter