我有这个问题。 我有一个列表视图,根据有多少电子邮件地址有联系人创建。 现在我希望我能以特定的方式更改此电子邮件地址。 例如,如果我的一个联系人有四个电子邮件地址(one@gmail.com, 两个@ gmail.com,三个@ gmail.com,四个@ gmail.com)并修改其中一个电子邮件地址的第二个例子(two@yahoo.com)我怎么才能改变它只留下另一个?
对于每个电子邮件地址,我都有一个bean,其中包括: Email._id , Email.Type , Email.Data 。
谢谢大家的帮助。
P.S。 抱歉我的英文;)
问题不在列表视图中,而是在特定的联系人电子邮件地址中。 这是我在编辑单个电子邮件地址时使用的代码。
String emailData = "example@email.com";
String contactId="123456";
int typeEmail=1;
ops.add(ContentProviderOperation
.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(
ContactsContract.Data.CONTACT_ID + "=? AND " + ContactsContract.Data.MIMETYPE
+ "=?",
new String[] { contactId, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE })
.withValue(ContactsContract.CommonDataKinds.Email.DATA, emailData)
.withValue(ContactsContract.CommonDataKinds.Email.TYPE, typeEmail).build());
我解决了它:
我只是将列更改为ContactsContract.Data.CONTACT_ID
到ContactsContract.Data._ID
for (int i = 0; i < listEmail.size(); i++) {
ops.add(ContentProviderOperation
.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(
ContactsContract.Data._ID + "=? AND "
+ COLUMN_MIMETYPE + "=?",
new String[] { listEmail.get(i).getId(),
MIMETYPE_STRING_EMAIL })
.withValue(COLUMN_EMAIL, listEmail.get(i).getName())
.withValue(COLUMN_EMAIL_TYPE,
listEmail.get(i).getType()).build());
}