80,350
社区成员
发帖
与我相关
我的任务
分享
/**
* 保存隐藏视频数据(先转换成json,再写入本地文件)
*
* @param list
*/
public static boolean setVideoHideJson(ArrayList<Video> list) {
if (list == null) {
return false;
}
L.i("JsonUtil", "保存的隐藏视频数据:" + list.toString());
try {
JSONArray array = new JSONArray();
for (Video ent : list) {
JSONObject object = new JSONObject();
object.put("_id", ent.getId());
object.put("name", ent.getName());
object.put("duration", ent.getDuration());
object.put("size", ent.getSize());
object.put("path", ent.getPath());
object.put("resolution", ent.getResolution());
object.put("datetaken", ent.getDatetaken());
object.put("bucketId", ent.getBucketId());
object.put("bucketName", ent.getBucketName());
object.put("width", ent.getWidth());
object.put("height", ent.getHeight());
array.put(object);
}
return HideFileUtil.saveVideoHideFile(array.toString());
} catch (JSONException e) {
e.printStackTrace();
return false;
}
}
后面那里我是把ArrayList数据转换成Json格式的字符串数据用文件的形式写到SD卡的,也就是这个方法(HideFileUtil.saveVideoHideFile(...))当然了你可以把它换成用SharedPreferences保存到本地。然后下面是把Json格式的字符串数据转换成ArrayList
/**
* 获取隐藏视频数据(先从本地文件获取json格式数据,再转换成ArrayList)
*
* @return
*/
public static ArrayList<Video> getVideoHideJson() {
String json = HideFileUtil.getVideoHideFile();
if (json == null) {
return null;
}
L.i("JsonUtil", "隐藏的JSON视频数据:" + json);
try {
ArrayList<Video> list = new ArrayList<Video>();
JSONArray array = new JSONArray(json);
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.getJSONObject(i);
Video ent = new Video();
ent.setId(object.getInt("_id"));
if (object.has("name")) {
ent.setName(object.getString("name"));
}
ent.setDuration(object.getInt("duration"));
ent.setSize(object.getLong("size"));
if (object.has("path")) {
ent.setPath(object.getString("path"));
}
ent.setResolution(object.getLong("resolution"));
ent.setDatetaken(object.getLong("datetaken"));
ent.setBucketId(object.getInt("bucketId"));
if (object.has("bucketName")) {
ent.setBucketName(object.getString("bucketName"));
}
ent.setWidth(object.getInt("width"));
ent.setHeight(object.getInt("height"));
list.add(ent);
}
L.i("JsonUtil", "隐藏的LIST视频数据:" + list.toString());
return list;
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}
同理,把上面HideFileUtil.getVideoHideFile();可换成SharedPreferences。
最后根据我在实际开发中总结的经验,最好不要用第三方的Json转换包,因为如果后面出了什么问题的话都不好找到原因,最好还是自己写,这样也方便日后维护。
/**
* 将list连接成字符串
*
* @param list
* @param joiner
* 连接字符
* @return
* @author c99999999 2015-6-27 下午3:08:00
* @param <T>
* @since v1.0
*/
public static <T> String join(List<T> list, String joiner) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < list.size(); i++) {
if (list.get(i) != null) {
sb.append(list.get(i).toString());
if (i < list.size() - 1) {
sb.append(joiner);
}
}
}
return sb.toString();
}
/**
* 将字符串转换为List
* @param 字符串
* @return List
*/
public static List getListString(String s)
{
String subS[] = s.split(",");
List list = Arrays.asList(subS);
return list;
}