收藏、点赞按钮 怎么由当前的状态(收藏/取消收藏)通过点击设置为取消收藏(收藏)

看到这里,我是想介绍我对这个收藏按钮(五角星),反复点击来迎合用户体验的。那怎么满足反复点击设置状态呢?

要求是这样的:我点击收藏按钮(假设:原先的收藏按钮是未收藏状态(暗色)),当我点击过收藏的时候,按钮被点亮为橙色。当我再次对其点击的时候,当然,我要知道此时的收藏按钮的当前状态(是暗色呢?还是被点亮的)。然后,根据此时状态对其设置其相对的状态。

有很多的朋友,使用标志位,对其设置一个状态位。比如,让 1 (已收藏) 0(未收藏),每次点击后通过该按钮上次已经设置的那个标志位来再次设置点击后的状态;或者更为复杂的方式。我觉得确实很复杂,所以想了又想,最终聪明的我,想到了一个好办法!

这个是基于我的项目来讲的哦!

在对后台请求数据的时候,比如上面的最新剧本的数据。那么我获取到的一定是一个List<DramaBookBean>,然后在DramaBookBean中有这些属性:图片的url 、 剧本的名字 、 简单介绍、 类型 、 价格 、 收藏按钮的状态。注意:有收藏按钮的状态这个属性哦!那么就好办了,不用什么标志位设置,都过于烦淫。我们应该充分的利用那个从后台请求来的收藏按钮的状态值。这样做:起初,进来的时候(在适配器中)通过按钮的状态值判断在这个listview显示的时候ta应该是怎么个状态,并通过状态值判断后进行状态设置。然后,当我们对其进行点击的时候,假设:原先是暗色未收藏的状态。点击时候,先判断(此时状态值为未收藏),通过从后台请求来的状态值判断后来设置其为收藏的状态。同时,使用适配器下DramaBookBean同步更新其对应的item下的按钮的收藏状态。当然,整个操作流程还没有完,这个只是在适配器中,而当其在调用ta的activity中,通过接口回调监听点击事件,在该Activity中进行提交数据到服务器同步数据的时候,由于网络的偶然问题,成功或者失败都要在此时此地同步更新两个对象(适配器中DramaBookBean对象的按钮收藏的状态值
和 Activity中DramaBookBean对象的按你家收藏状态值)收藏状态的值;

这样,也就是说:每当我操作一次时候,在与此相关的DramaBookBean(adapter中、acitivity中)都要同步更新收藏按钮的状态值,以便再次进行点击操作的时候可以获得并依据当前已经显示的状态,来设置点击操作后应该显示的状态!

时间: 2024-08-08 22:08:33

收藏、点赞按钮 怎么由当前的状态(收藏/取消收藏)通过点击设置为取消收藏(收藏)的相关文章

UITableviewCell上添加button,按钮的normal或selected状态显示不正常的可能原因。

根据返回的信息对cell上button的状态进行设置时,由于cell的复用机制,有时候会导致button的显示状态和我们设置的状态不一样,有可能的原因是我们根据返回数据进行设置时只设置了一种状态,比如: //点击点赞按钮 if (model.user_praise) { //如果存在praise_user,说明已经点过赞,将按钮状态设置为已经点赞的状态 cell.likeButton.selected = YES; } 利用上面的方式进行设置就可能导致button状态显示不正常,正确的做法是两种

vue 表格数据编辑,点击取消或者完成按钮后,关闭编辑状态没有及时生效

点击编辑按钮: 编辑状态下,表格可以编辑.但是点击"确认"或者"取消"按钮,列数据编辑状态已经修改,但是视图没有改变. 页面代码: 获取当前行的index,并直接修改当前行用于判断是否编辑状态的数据为false(不可编辑): 根本原因是因为vue的视图更新不及时问题导致. 解决方法: 需要使用vue.set()方法进行修改数据才可以立刻更新视图 原文地址:https://www.cnblogs.com/luoxuemei/p/9945411.html

纯JS设置首页,增加收藏,获取URL參数,解决中文乱码

雪影工作室版权全部,转载请注明[http://blog.csdn.net/lina791211] 1.前言 纯Javascript 设置首页,增加收藏. 2.设置首页 // 设置为主页 function SetHome(obj, vrl) { try { obj.style.behavior = 'url(#default#homepage)'; obj.setHomePage(vrl); } catch (e) { if (window.netscape) { try { netscape.s

纯JS设置首页,加入收藏,获取URL参数,解决中文乱码

雪影工作室版权所有,转载请注明[http://blog.csdn.net/lina791211] 1.前言 纯Javascript 设置首页,加入收藏. 2.设置首页 // 设置为主页 function SetHome(obj, vrl) { try { obj.style.behavior = 'url(#default#homepage)'; obj.setHomePage(vrl); } catch (e) { if (window.netscape) { try { netscape.s

盒子 收藏帖子 转移-实现向网页自动填写用户名密码并自动点击登录按钮 完成全自动凳录

//实现向网页自动填写用户名密码并自动点击登录按钮 完成全自动凳录 Function FillForm(WebBrowser: TWebBrowser2; FieldName: String; Value: String): Boolean; Var i, j: Integer; FormItem: Variant; Begin Result := False; //no form on document If WebBrowser.OleObject.Document.all.tags('FO

在插件式应用程序中,实现对菜单,工具栏按钮的 完全解耦及状态控制

之前承诺会对 Winform IDE,WPF 客服程序的开发进行进一步的分解记录,很抱歉一直没有太多时间认真梳理. 本篇博客抽取了这两个应用程序的一个共通功能的实现方法进行说明,即在插件式应用程序中,对菜单及工具栏的控制. 对于复杂的应用程序开发,我们可能会将程序的功能进行分解,模块化,插件化:那么如何在应用程序的宿主中,向插件提供统一的菜单,工具栏注册,更新,销毁机制呢?以及如何做到UI无关的彻底解耦合? 看两个例子: 基于 Winform 的插件式应用程序: http://www.cnblo

菜鸟入门, eclipse工具的停止调试按钮总是处于禁用的状态,使我无法停止调试 ,有图

============问题描述============ 我的程序部署在红米s1上,我想停止调试,发现停止调试的红色按钮总是灰色不可用,可以正常调试,但就是不能停止调试 ============解决方案1============ 点击断开连接,然后在右边点击那个小爬虫,显示debug进程信息,然后右键点击进程信息,选择Terminate and Remove,这时你的程序就完全停止调试了.

如何实现点赞按钮图片切换

在vue里边想要实现点赞功能,也就是点一下图片换成另外一张,再点一下切换回来,如此循环. 来回切换的功能最简单的办法就是用v-if v-else指令了. 具体操作:先写两个img标签,同时绑定点击事件:@cilck="xxx()", 第一个img标签:写上v-if="i%2!==0",也就是说当i为奇数时,显示该图片,src属性把灰色的图片地址写上: 第二个img标签:写上v-else,也就是说当i为偶数时,显示该图片,src属性把红色的图片地址写上. 然后再dat

问题:asp.net 点击button按钮调到页面顶部;结果:asp.net点击一个按钮,使页面跳转到本面页上的指定位置

asp.net点击一个按钮,使页面跳转到本面页上的指定位置 (2011-04-19 16:46:51) 转载▼ 标签: it   最近在做一个项目. 用到标题所说的功能. 实现方法: 1.在aspx中添加一个javascript: <script language="javascript" type="text/javascript">         <!-- function autoclick()         {