您的位置:首页 > 移动开发

如何在App中实现朋友圈功能之七快速实现上拉加载朋友圈功能——箭扣科技Arrownock

2015-12-02 12:06 627 查看

如何在App中实现朋友圈功能

之七

快速实现上拉加载朋友圈功能

逻辑分析:取出缓存postList里的最后一条数据postLista. 如果lastPost存在,说明缓存里有数据,接着取出数据库中与lastPost时间最接近的一条latestPost,以它们的created_at作为关键查询条件,去服务器取limit条(比如10)数据:1. 如果服务器返回的Post数量大于0,将Post存入数据库,之后需要做两个查询动作:
查询出新的Like和Comment:根据本地数据库里的最新一条Like的created_at和最新一条Comment的created_at作为begin_time去服务器获取Like和Comment。

查询出从服务器获取到的limit条post的Comment和Like:根据postId从服务器查询出Comment和Like,加载出来的数据存入数据库,等全部加载完毕,刷新界面。

2. 如果服务器返回的数据等于0,说明服务器没有这中间的数据,剩余的数据从本地数据库中取,从本地数据库中取出limit条数据,然后根据本地数据库里的最新一条Like的created_at和最新一条Comment的created_at作为begin_time去服务器获取Like和Comment,全部加载完毕后,刷新界面。b. 如果lastPost不存在,说明缓存postList没有数据,不用做任何动作,刷新界面提示没有更多消息即可。 实现逻辑代码:以安卓系统为例:
// 获取下一页Post
private void getNextPageData() {
Post lastPost = null;
Post latestPost = null;
if (null != postList && !postList.isEmpty()) {
lastPost = postList.get(postList.size() - 1);
}
// 如果lastPost存在,从服务器获取post
if (null != lastPost) {
//取出数据库中与lastPost时间最接近的一条latestPost
latestPost = PostHelper.getLatestPostByTime(lastPost.createdAt);
Map<String, Object> params = loadGetNextQueryPostParams(lastPost,latestPost);
try {
anSocial.sendRequest("posts/query.json", AnSocialMethod.GET, params,
new IAnSocialCallback() {
@Override
public void onSuccess(final JSONObject response) {
try {
JSONObject meta =response.getJSONObject("meta");
int total = meta.getInt("total");
JSONArray postsJson= response.getJSONObject("response")
.getJSONArray("posts");
// 如果post的数量大于等于limit
if (total > 0) {
// 存入数据库
savePostToDB(postsJson);
postList.addAll(tempPostList);
// 先根据根据latestLike和latestComment的createdAt
// 获取like和comment
// 再根据postId取出like和comment
loadLikeAndCommentByLatestData();
} else {
// 从数据库获取缓存postList的lastPost时间往后limit数量的post
getPostFromDBByTime(POST_LIMIT, postList
.get(postList.size() - 1));
// 根据latestLike和latestComment的createdAt
// 获取like和comment,刷新
loadLikeAndCommentByLatestData(true);
}
} catch (Exception e) {
}
}
@Override
public void onFailure(JSONObject response) {
}
});
} catch (ArrownockException e) {
}
}
// 如果lastPost不存在,什么都不做
else {
runOnUiThread(new Runnable() {

@Override
public void run() {
mPullRefreshListView.onRefreshComplete();

}
});
}
}


如何在App中实现朋友圈功能系列文章:之一朋友圈实现原理浅析之二快速实现用户信息的自定义之三快速实现双向好友功能之四在朋友圈中添加发送图片功能之五点赞、评论属性详细解析之六快速实现下拉加载朋友圈功能之七快速实现上拉加载朋友圈功能之八页面加载功能的逻辑与实现

本文出自 “箭扣科技Arrownock” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: