1.首先给出序列化与反序列化工具类

public class SerializableInterface {public SerializableInterface(){}public static byte[] serialize(HashMap<String, String> hashMap){        try {       ByteArrayOutputStream mem_out = new ByteArrayOutputStream();ObjectOutputStream out = new ObjectOutputStream(mem_out);out.writeObject(hashMap);out.close();           mem_out.close();           byte[] bytes =  mem_out.toByteArray();           return bytes;} catch (IOException e) {return null;}} public static HashMap<String, String> deserialize(byte[] bytes){try {ByteArrayInputStream mem_in = new ByteArrayInputStream(bytes);ObjectInputStream in = new ObjectInputStream(mem_in);HashMap<String, String> hashMap = (HashMap<String, String>)in.readObject();         in.close();         mem_in.close();    return hashMap;} catch (StreamCorruptedException e) {return null;} catch (ClassNotFoundException e) {return null;}   catch (IOException e) {return null;} }}

2.定义一个方法获取学生的信息,其中家庭成员信息保存在hashmap后,序列化到sqlite

public ArrayList<ContentValues> formatStudentInfo() { ArrayList<ContentValues> valueArr = null; ContentValues values = null; HashMap<String, String> map = null; valueArr = new ArrayList<ContentValues>();  //第一组数据 values = new ContentValues(3);  values.put("name", "david"); values.put("class","0502"); map = new HashMap<String, String>(); map.put("mom", "lucy"); map.put("dad", "jack"); byte[] bytes = SerializableInterface.serialize(map); values.put("family", bytes); valueArr.add(values);  //第二组数据 values = new ContentValues(3);  values.put("name", "joy"); values.put("class","0502"); map = new HashMap<String, String>(); map.put("mom", "mary"); map.put("dad", "json"); bytes = SerializableInterface.serialize(map); values.put("family", bytes); valueArr.add(values);  return valueArr; }
3.调用数据库的操作类将
formatStudentInfo返回的数据insert到数据库。这个方法应该放在自己写的继承了SQLiteOpenHelper的类中 public void insertAll(String databaseName,   ArrayList<ContentValues> valuesArr) {  SQLiteDatabase db = getWritableDatabase();  db.beginTransaction();   for (ContentValues val : valuesArr) {   db.insert(databaseName, null, val);  }  db.setTransactionSuccessful();   db.endTransaction();  db.close(); }读取的时候调用Cursor cursor db.query("fix your self");.......//通过getBlob方法获取bytes后反序列化得到map对象,参数x是序列化字段所在的列数(从0开始计数)。byte[] bytes = cursor.getBlob(x);HashMap<String, String> map = SerializableInterface.deserialize(bytes);

以上仅是对序列化与反序列化HashMap对象做一个简单的介绍,代码并不完整,数据库操作部分需要自己补充完整。



更多相关文章

  1. Android 四种获取屏幕宽度的方法总结
  2. android 数据存储总结及各种存储方式
  3. Android 隐藏显示软键盘的终极方法
  4. Android前端通过Http协议与J2EE后端数据交互。工具eclipse、MySQ
  5. Android自定义dialog简单实现方法
  6. android使用sharedPreferences()方法读写文件操作
  7. Android getWindow().setFlags方法 设置窗体全屏点亮背景模糊 &&
  8. Android:Activity中onCreate方法的参数及用途

随机推荐

  1. Android安全机制解析与应用实践 Android
  2. 总结系列-触摸屏事件的传递机制
  3. GestureOverlayView属性
  4. Android点滴(1):获取Android系统的唯一识别
  5. Android中的页面切换动画
  6. Android控件拖拽功能的实现
  7. Android SMS 短信操作
  8. Android(安卓)工程目录简单结构
  9. 使用Android Studio打Andorid apk包的流
  10. Android 3.0之后开机无法接收系统广播权