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

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

之七

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

逻辑分析:

取出缓存postList里的最后一条数据postList

a. 如果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中实现朋友圈功能系列文章:

之一朋友圈实现原理浅析

之二快速实现用户信息的自定义

之三快速实现双向好友功能

之四在朋友圈中添加发送图片功能

之五点赞、评论属性详细解析

之六快速实现下拉加载朋友圈功能

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

之八页面加载功能的逻辑与实现

时间: 2024-10-11 05:23:01

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

如何在App中实现朋友圈功能之一朋友圈实现原理浅析——箭扣科技Arrownock

如何在App中实现朋友圈功能 之一 朋友圈实现原理浅析 微信朋友圈.新浪微博.知乎等知名朋友圈类型功能,大家有没有想过其实现的逻辑呢? 本文以微信朋友圈功能为例,解析实现逻辑. 朋友圈的结构: 朋友圈从总体上来说会分为6块结构,分别是墙.用户.图片.墙贴.评论与点赞. 墙:一块公共的墙,所有的墙贴都位于其上,如果APP只实现朋友圈功能,那么墙贴其实是可以不用的,但是如果APP要实现朋友圈.新闻圈等等其他各种墙贴类型消息的话,那么墙就显得很有必要了,这时候我们需要通过建立不同的墙来展示不同类型的墙

如何在App中实现朋友圈功能之二快速实现用户信息的自定义——箭扣科技Arrownock

如何在App中实现朋友圈功能 之二 快速实现用户信息的自定义 自我关联社交元素: anSocial中很多的社交元素API,如帖子(Post).相册(Album).文件(File)等,这些API的可选参数中允许传入其他社交元素的id. 当我们传了这些id时,服务器数据库里保存的是id,但是在返回结果里,会将这些id以对象的形式返回. 这样就大大提升了查询效率,原本需要查询两次的功能,现在可以一次实现,比如接下来要说的用户头像功能开发里可以利用的字段. 用户头像: 当我们在APP上创建用户,需要调用

如何在App中实现朋友圈功能之三快速实现双向好友功能——箭扣科技Arrownock

如何在App中实现朋友圈功能 之三 快速实现双向好友功能 在社交APP的使用中,用户相互添加好友是一个必要的场景,本期技术分享在这里给大家介绍如何利用AnSocial的Friend来实现微博粉丝和微信好友机制. 微博粉丝机制: 微博是一个单向的好友关系链,从单个用户出发,他拥有关注者和粉丝.利用Friend可以实现以下场景:用户A关注了B,用户C关注了A,即B拥有粉丝A,A拥有粉丝C. 具体实现方式: 用户A关注B,调用新建Friend(friends/add.json),参数中target_f

如何在App中实现朋友圈功能之五点赞、评论属性详细解析——箭扣科技Arrownock

如何在App中实现朋友圈功能 之五 点赞.评论属性详细解析 快速查看评论和点赞数量: 当我们创建一个墙贴后,这个墙贴会自动带有评论数量commentCount.赞数量likeCount.讨厌数量dislikeCount三个属性. 当有用户对这个墙贴进行了评论,该墙贴的commentCount属性会自动增长,无需开发者来手动操作实现. 如果用户建立的Like中like=true,那么likeCount会自动增长,反之,dislikeCount会自动增长. 如果用户把评论删除了,或者是把点赞撤销了,

让Android Support V4中的SwipeRefreshLayout支持上拉加载更多

前言 原来的Android SDK中并没有下拉刷新组件,但是这个组件确实绝大多数APP必备的一个部件.好在google在v4包中出了一个SwipeRefreshLayout,但是这个组件只支持下拉刷新,不支持上拉加载更多的操作.因此,我们就来简单的扩展一下这个组件以实现上拉下载的目的. 基本原理 上拉加载或者说滚动到底部时自动加载,都是通过判断是否滚动到了ListView或者其他View的底部,然后触发相应的操作,这里我们以ListView来说明.因此我们需要在监听ListView的滚动事件,当

Android 开发 上拉加载更多功能实现

实现思维 开始之前先废话几句,Android系统没有提供上拉加载的控件,只提供了下拉刷新的SwipeRefreshLayout控件.这个控件我们就不废话,无法实现上拉刷新的功能.现在我们说说上拉加载更多的功能实现 思维步骤: 首先需要创建一个叫页尾的布局文件,它用来在列表的最后面显示使用 接着我们需要想办法在RecyclerView的适配器里导入这个页尾布局.你的列表内容适配器的普通item该如何实现还是如何实现. 为了导入这个页尾布局,我们需要在导入的List长度+1,因为这个页尾布局是另外加

Android利用V4包中的SwipeRefreshLayout实现上拉加载

基本原理 上拉加载或者说滚动到底部时自动加载,都是通过判断是否滚动到了ListView或者其他View的底部,然后触发相应的操作,这里我们以 ListView来说明.因此我们需要在监听ListView的滚动事件,当ListView滚动到底部时自动触发加载操作:但是当用户支持手指滑动屏 幕,没有滚动时,我们也需要让它加载,因此这种情形就是上拉加载更多.所以我们需要在触摸事件里面进行判断,如果到了底部,且用户是上拉操作,那么执行加 载更多. 时间有限,直接上代码吧. 实现代码 /** * 继承自Sw

vue之better-scroll的封装,包含下拉刷新,上拉加载功能及UI(核心为借鉴,我仅仅是给轮子套上了外胎...)

先发原文作者.地址等信息.我把内容全部搬过来了,也可以去看原文.内容绝对是满满的干货,给原作者点赞!(我添加的内容在转载过来的后面,内容不多) 作者: ustbhuangyi 链接:http://www.imooc.com/article/18232 来源:慕课网 在我们日常的移动端项目开发中,处理滚动列表是再常见不过的需求了,以滴滴为例,可以是这样竖向滚动的列表,如图所示: 也可以是横向滚动的导航栏,如图所示: 可以打开"微信 -> 钱包->滴滴出行"体验效果. 我们在实

带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载

转载请注明出处:http://blog.csdn.net/lowprofile_coding/article/details/51321896 一 .前言 最近实在太忙,一个多礼拜没有更新文章了,于是今晚加班加点把demo写出来,现在都12点了才开始写文章. 1.我们的目标 把RecyclerView下拉刷新上拉加载更多加入到我们的开发者头条APP中. 2.效果图 3.实现步骤 找一个带上拉刷新下载加载更多的RecyclerView开源库,我们要站在巨人的肩膀上 下载下来自己先运行下demo,然