技术开发 频道

Jquery Mobile设计Android通讯录第二章

  删除一条通讯录

  当用户点删除按钮时,代码如下:

function deleteContact(){
  showProgress();
  contactSupport.deleteContact(contactIdVar.val(),
'ListPage.html');
}

 

  这里同样也是调用后端JAVA应用的deleteContact方法,并且向后端传入要删除的当前通讯录的ID。而后端的代码如下:

public void deleteContact(String contactId, String displayPage){
  ContactUtility.deleteContact(contactId, ...);
  loadPage(displayPage);
}

 

  其中这里的ContactUtility.deleteContact方法,将会在后续的教程中详细讲解。

  保存通讯录

  在保存已经写好的通讯录后,当用户点保存按钮时,将会将用户的输入产生为JSON格式,然后提交到后端去,代码如下:

function generateJson(){
  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字段的保存代码,如下:

// 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()方法进行保存,代码如下:

import org.codehaus.jackson.map.ObjectMapper;

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去访问通讯录中的相关数据。

0
相关文章