删除一条通讯录
当用户点删除按钮时,代码如下:
showProgress();
contactSupport.deleteContact(contactIdVar.val(),'ListPage.html');
}
这里同样也是调用后端JAVA应用的deleteContact方法,并且向后端传入要删除的当前通讯录的ID。而后端的代码如下:
ContactUtility.deleteContact(contactId, ...);
loadPage(displayPage);
}
其中这里的ContactUtility.deleteContact方法,将会在后续的教程中详细讲解。
保存通讯录
在保存已经写好的通讯录后,当用户点保存按钮时,将会将用户的输入产生为JSON格式,然后提交到后端去,代码如下:
showProgress();
var jsonText = '{';
jsonText += '"contactId":"' + contactIdVar.val() + '"';
jsonText += ',"firstName":"' + firstNameVar.val() + '"';
jsonText += ',"lastName":"' + lastNameVar.val() + '"';
jsonText += ',"note":{"rowId":"","text":"' + noteVar.val() + '"}';
...
可以看到,实际上就是将用户的输入组织为JSON格式的字符串,注意,其中note中的rowId这里可以设置为空字符串,因为对于新增记录来说,这个字段并不重要。
下面是对电话phones字段的保存代码,如下:
jsonText += ',"phones":[';
$('input[id$="_No"]').each(function(index) {
jsonText += '{"rowId":"","type":"';
jsonText += (($(this).attr('id')).split('_'))[1] + '","no":"';
jsonText += $(this).attr('value') + '"';
jsonText += '},';
});
jsonText = addClosingBracket(jsonText);
...
jsonText += '}';
contactSupport.saveContact(jsonText,'ListPage.html');
}
function addClosingBracket(txt){
if((txt.length - 1) == txt.lastIndexOf(',')){
txt = txt.substring(0,txt.length - 1) + ']';
}else{
txt += ']';
}
return txt;
}
对于电话类型type,这里要将用户的输入进行截取,比如id="15_1_No",则电话类型为1,
这里做了一个简单对所有的<input>元素进行分析截取。
当准备好要向后端提交的JSON格式后,则可以调用后端JAVA应用的ContactsActivity.saveContact()方法进行保存,代码如下:
public class ContactsActivity extends Activity {
...
public void saveContact(String json, String displayPage){
ObjectMapper mapper = new ObjectMapper();
try{
Contact c = mapper.readValue(json,Contact.class);
ContactUtility.saveOrUpdateContact(c, getContentResolver(), accountName, accountType);
}catch(Exception e){
...
}
loadPage(displayPage);
}
...
}
其中ObjectMapper类是Jackson JSON解析处理器中的一个负责将JSON转化为POJO实体类的工具类。Jackson JSON(http://jackson.codehaus.org/)是个不错的JSON分析处理工具。其使用很简单,这里通过mapper.readValue(json,Contact.class);
就完成了将JSON字符串解析转为Contract实体类的工作,最后用saveContact()方法进行保存。
小结
在本系列教程的第二篇,讨论了如何读取和编辑存在的通讯记录到前端页面,如何新建通讯录的帐号。在下一篇教程中,将讨论使用Android API去访问通讯录中的相关数据。