经过多天的试验,今天这个PullToRefreshListView终于完美了。
以前的同事写的,代码多,时常出现重复现象,及刷新时,页面出现闪空。
现在的做法是,所有数据下载时直接保存到数据库,然而读取。
以下为不完全代码:
数据库方面:
/**
* 插入数据(不同组里的数据),带总数
* @param type
* @param cacheData
* @param createTime
* @return
*/
public synchronized long commonInsertData(int type,byte[] cacheData,int count,long id,long createTime){
SQLiteDatabase db = getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("type",type);
cv.put("listId",id);
cv.put("count",count);
cv.put("cacheData",cacheData);
cv.put("createTime",createTime);
return db.insert("commonDatabase",null,cv);
}
/**
* 根据Type 和ID 修改数据,用于有下一页的
* @param groupId
* @param type
* @param cacheData
* @return
*/
public synchronized long updateMembersData(int type,byte[] cacheData,int count,long id,long createTime) {
SQLiteDatabase db = getWritableDatabase();
String where = "type=? and listId=?";
String[] whereValue = { String.valueOf(id), String.valueOf(type) };
ContentValues cv = new ContentValues();
cv.put("cacheData", cacheData);
return db.update("commonDatabase", cv, where, whereValue);
}
handler操作
private void parseDataToDB(CommonList list){
if(moreTag != 0 && commonList != null ){
commonList.addAll(mc.getCommonList().getCommonItem());
service.commonDeleteData(CommonType.COMMON_TYPE,groupID);
service.commonInsertData(CommonType.COMMON_TYPE
,SerializeUtil.serializeObject(commonList) ,mc.getCommonList().getCount()
,groupID,Integer.parseInt(mc.getFans().getNext())
,System.currentTimeMillis());
}else{
service.commonDeleteData(CommonType.USER_FANS,userID);
service.commonInsertData(CommonType.USER_FANS
,SerializeUtil.serializeObject(mc.getCommonList().getCommonItem()),mc.getCommonList().getCount() ,groupID,Integer.parseInt(mc.getCommonList().getNext()),System.currentTimeMillis());
}
}