【踩坑必备】这可能是你想知道的圈子赞和互评实现逻辑思路~

一、写在前面

现在可以说各大App都集成了社区功能,一条主贴,几条评论,几张美图,点赞,反对,嗨不停。

这不,最近一个即将答辩的毕业生(下周答辩)让我有偿帮他实现一个赞和评论发布动态的功能,说是看不太明白我的开源毕业设计:https://github.com/nanchen2251/AiYaSchoolPush,无奈我实在是有些太忙,也琢磨着好些日子没有更新博客,这里就结合一个实际项目做一下讲解,姑且做个抛砖引玉吧。

因为这毕竟是个人思路,难免会有不足之处,不过的确是能实现功能。有更好的或者别样的实现逻辑的围观老爷还望在评论区为大家讲解一下。

二、点赞

【我们或许会想到每一个条目都得用一个数据来存放是否点赞的信息和赞的数量,如果采用全局的变量肯定是不显示的,我们不应该忽略holder是一个局部变量,但是这个方法实际上是可以对holder做操作的】

1、目前代码中采用的是可复用的RecyclerView,大概地封装了一个通用的Adapter,大概可以看到是在base目录下的BaseRecyclerAdapter和BaseRecyclerHolder,其中我们通过对BaseRecyclerHolder的复用来确保一个Adapter适配所有RecyclerView。

2、点赞逻辑,主要是归为班级圈的列表显示页CirclePagerFragment。现在服务器将返回一个Topic列表(包含当前用户是否已赞isIPraised,以及所赞的人数count),现在从服务器获取出来的数据直接显示到列表上,如果已赞,显示为红色;

3、假如用户现在已赞,点击应该设置为灰色,设置—count,在向服务器传递点赞信息的时候,第二个参数值为true的时候表示我们要赞,false表示取消赞,而这正好是与我们服务器返回的是否已赞的信息是相反的,所以在与服务器交互的时候第二个参数应该为!isIPraised。

4、从服务器获取数据成功后,如果是取消赞(false),则设置为灰色,数量减一,反之设置红色,++count。

5、最后别忘了还要设置item项的这个值为相反值。

三、评论、回复

【在评论和回复中,我们可能会很难区分到底什么时候在评论的内容和前面加上回复的什么人,又如何判断是回复,还是一条普通的评论。解决思路是用一个全局的值做不赋值的初始化,在正常情况下,我们可以通过判断是否赋值来判断是评论和回复,当是回复的时候,把要回复的人的信息存在全局变量中,但千万要注意的是记得再使用后把它重置回去。】

1、在我们点击一级页面后,会进入到详情页面,在详情页,我们可以进行评论和回复。

2、我们同样是在获取到网络数据后对每一个item进行填充。

3、在上图中,我们为每一个Item设置点击事件,如果点击的是本人,我们这里不做处理,(实际上可能大多数项目会要求直接评论该主贴)。假设我们点击了别人的评论,这时候我们把编辑框的hint设置为回复 要回复的人: 并弹出键盘,把我们要回复的id(评论接口需要,如果这个id为0则代表只是评论)赋值全局变量replyToUserId(后面需要)和item的那个人拿出来(用于后面的显示);

4、我们点击和服务器交互成功后会调用commentSuccess方法。

5、在与服务器交互成功后,我们希望能把最新的评论显示在顶部,在RecyclerView中可以增删一条数据的有点凸显出来,我们需要对item的model做一次实例化赋值并插入到adapter中,然后重置文本输入框。

时间: 2024-10-17 17:04:56

【踩坑必备】这可能是你想知道的圈子赞和互评实现逻辑思路~的相关文章

踩坑(Running)填坑(ZSSURE):DevExpress的XtraTabControl、Telerik的OpenAccessContext以及StarUML

题记: 今天好友在朋友圈分享了一篇有深度的好文"请鼓励你的孩子做个幸福普通人",文章略显长,细细品读下来感触颇多.加之最近天天看着小外甥大睿睿的一步步的成长,已渐渐远离年轻稚嫩.走向成熟稳重的我对学习有了新的认识,回想起自己的成长过程,经验和技能并非是父母手把手教导的,反而是他们给我营造的"自由.开放.甚至略显放纵"的环境.他们以身作则的行动,让我从中体会.感悟出了所有的点点滴滴. 说到现在从事的软件研发工作,想想同学中毕业鲜有留下来做技术的(姑且认为IT民工也属于

360插件化RePlugin踩坑

点击图片购书 1.什么是RePlugin? 在Android开发领域,有关插件化的讨论一直热度不减.目前市面上的插件化方案虽然很多,但多数只能实现某些功能的插件化,距离开发者的预期尚有相当差距.对此,在近期GMTC全球移动技术大会上,360手机卫士主程序架构负责人张炅轩宣布,360的插件化框架RePlugin已经可以实现"全面插件化",同时具有出色的稳定性和灵活性,可适用于各种类型的应用上."RePlugin预计7月份开源,这将是我们献给安卓世界最好的礼物."360

Zabbix 踩坑之旅——zabbix触发重启tomcat

一.实验需求 公司tomcat服务经常自动崩溃,导致业务中断,暂时用zabbix对其执行监控,在tomcat崩溃时能够先自动启动,保证业务尽快恢复正常. 二.准备环境 系统环境:CentOS 6.5 IP地址: zabbix-server: 192.168.239.128 zabbix-agent: 192.168.239.130 zabbix的服务端和客户端的安装此处都以rpm包安装,配置略过.agent端上安装好tomcat. 三.开启踩坑之旅--agent端 ① 修改zabbix-agen

Android开发在路上:少去踩坑,多走捷径【转】

作者:gzjay,腾讯MIG无线产品部 高级工程师 最近一朋友提了几个Android问题让我帮忙写个小分享,我觉得对新人还是挺有帮助的,所以有了这个小分享. 1.目前, Android APP开发完成后,通常需要在哪些机型上进行测试? 2.目前, 开发Android APP时,需要考虑的分辨率有哪些? 这两个问题可以合起来回答的. http://developer.android.com/about/dashboards/index.html 源自Google Play的数据,每月都会进行upd

ELK之ES2.4.1双实例平滑升级至5.2.1踩坑并supervisor管理记

ES老集群用的2.4.1版本,跑的比较好就一直没动,最近看资料ES5.X已经稳定,并且性能有较大提升,心里就发痒了,但由于业务要保持高可以用的属性,就得想一个平滑升级的方案,最后想到了多实例过度的办法,5.X版本网上介绍配置变化较大,也做好了踩坑准备,确定好要升级后,立刻动手. 一.对应升级改造方案 使用端口9220和9330 安装并配置好新的ES5.2.1实例-->关掉logstash并将ES2.4.1实例堆栈调小重启(kafka保留3个小时日志所以不会丢失)-->启动ES5.2.1并将lo

vue+ vue-router + webpack 踩坑之旅

说是踩坑之旅 其实是最近在思考一些问题 然后想实现方案的时候,就慢慢的查到这些方案   老司机可以忽略下面的内容了 1)起因  考虑到数据分离的问题  因为server是express搭的   自然少不了res.render("xx",data)    这句话的意思就是去查找相应的模板文件然后在用数据去渲染在将渲染好的页面去返回给浏览器,给浏览器去解析,渲染模板其实就是做的替换字符串+拼接字符串的活  各种的模板引擎也有各个优化的点(比如可以将对应的模板编译的函数保存在内存中,然后在通

AI相关 TensorFlow -卷积神经网络 踩坑日记之一

上次写完粗浅的BP算法 介绍 本来应该继续把 卷积神经网络算法写一下的 但是最近一直在踩 TensorFlow的坑.所以就先跳过算法介绍直接来应用场景,原谅我吧. TensorFlow 介绍 TF是google开源出来的人工智能库,由python语言写的 官网地址:http://www.tensorflow.org/   请用科学上网访问 中文地址:http://www.tensorfly.cn/ 当然还有其他AI库,不过大多数都是由python 写的 .net 的AI库叫 Accord.net

之后要接触更多代码管理的知识——2015踩坑有感

前言 学习是没有止境的,管理代码的能力也永远需要提高. 前几个月还觉得R语言,业务上要用的都学得七七八八了呢,这几个月在自家部门吭哧吭哧搞报表自动化时,各个坑一踩一个准,才明白写代码,懂得一点语言特性固然重要,弄一套科学地管理代码的方法,却是势在必行. 因此在这里总结一下这几个月来我踩过的种种坑,以及之后在查阅种种大神的经验,以及学软件工程这门课时看到的一些比较妥当的方法,算是这几个月的一个总结.2016年的时候,真的要多学学如何科学地管理代码,科学开发 请注意,因为我属于跨专业半路出家写代码,

运维小白部署网站踩坑全过程

作为一名一个星期之前还是个运维小白的我,经过一番摸爬滚打终于把我的小网站部署上去了 一.服务器环境 OK,一开始我得到的是一台centos的服务器,没有装apache/nginx.mysql和php环境,一开始我是使用lnmp一键安装包,结果发现php好多扩展和依赖缺失,重装了php后才解决了问题,mysql也遇到一些问题,所以建议大家在装环境时除非一键lamp/lnmp安装包经历过实践的考验,不然还是老老实实地一个一个组件安装,php.mysql.nginx. lnmp/lamp安装成功的标志