列出已存在的通讯录
下面,我们看下,当用户点某个人名的通讯录时,会显示其通讯录的详细情况。先回顾下在本系列教程第一篇中,提到的如下代码:
function setContactsList(jsonText){
var tmpJson = $.parseJSON(jsonText);
if(tmpJson != null && tmpJson.contacts != null){
var tmpContacts = tmpJson.contacts;
for(i = 0; i < tmpContacts.length; i++){
var tmpKey = (tmpContacts[i]).key;
var tmpKeyFragment = '<li data-role="list-divider">'+tmpKey+'</li>';
contactSelectionsVar.append(tmpKeyFragment);
var tmpValues = (tmpContacts[i]).values;
if(tmpValues != null){
var j;
for(j = 0; j < tmpValues.length; j++){
var tmpDisplayName = tmpValues[j].displayName;
var tmpContactId = tmpValues[j].contactId;
var tmpLiFragment = '<li><a href="javascript:showContact(' +
tmpContactId + ');return false;">'+tmpDisplayName+'</a></li>';
contactSelectionsVar.append(tmpLiFragment);
}
}
}
}
contactSelectionsVar.listview('refresh');
showList();
}
var tmpJson = $.parseJSON(jsonText);
if(tmpJson != null && tmpJson.contacts != null){
var tmpContacts = tmpJson.contacts;
for(i = 0; i < tmpContacts.length; i++){
var tmpKey = (tmpContacts[i]).key;
var tmpKeyFragment = '<li data-role="list-divider">'+tmpKey+'</li>';
contactSelectionsVar.append(tmpKeyFragment);
var tmpValues = (tmpContacts[i]).values;
if(tmpValues != null){
var j;
for(j = 0; j < tmpValues.length; j++){
var tmpDisplayName = tmpValues[j].displayName;
var tmpContactId = tmpValues[j].contactId;
var tmpLiFragment = '<li><a href="javascript:showContact(' +
tmpContactId + ');return false;">'+tmpDisplayName+'</a></li>';
contactSelectionsVar.append(tmpLiFragment);
}
}
}
}
contactSelectionsVar.listview('refresh');
showList();
}
这里,通过javascript去调用了showContact方法,用于显示某个人的具体通讯录,代码如下:
function showContact(tmpId){
showProgress();
contactSupport.showContact(tmpId,'DetailPage.html');
}
showProgress();
contactSupport.showContact(tmpId,'DetailPage.html');
}
这里,首先调用了等待图标的显示方法,然后同样调用后端Android Java的showContact方法调出通讯录的详细信息,然后再把结果回调显示到DetailPage.html中
而后端JAVA对应的showContact方法如下:
public void showContact(String contactId, String displayPage){
loadPage(displayPage + "?" + contactId);
}
loadPage(displayPage + "?" + contactId);
}
这里再通过loadPage调用前端的Javscirpt页面,并传入要查看的通讯录的参数contactId,假如现在要看的某人的通讯录的contatId是23,而回显通讯录详细信息的页面是DetailPage.html,则跳转的URL为DetailPage.html?23