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

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

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

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

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

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

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

 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个收藏点赞取消的代码示例,使用JavaScript和HTML: HTML ``` <button id="likeButton" onclick="like()">Like</button> <button id="favoriteButton" onclick="favorite()">Favorite</button> <button id="unfavoriteButton" onclick="unfavorite()">Unfavorite</button> ``` JavaScript ``` // 定义一个对象,表示用户的收藏点赞状态 var user = { favorites: [], likes: [] }; // 点击“Like”按钮时,将当前页面添加到用户的点赞列表中 function like() { user.likes.push(window.location.href); updateButtons(); } // 点击“Favorite”按钮时,将当前页面添加到用户的收藏列表中 function favorite() { user.favorites.push(window.location.href); updateButtons(); } // 点击“Unfavorite”按钮时,从用户的收藏列表中移除当前页面 function unfavorite() { var index = user.favorites.indexOf(window.location.href); if (index > -1) { user.favorites.splice(index, 1); } updateButtons(); } // 更新按钮状态,根据用户的收藏点赞状态设置按钮的文本和可见性 function updateButtons() { var likeButton = document.getElementById("likeButton"); var favoriteButton = document.getElementById("favoriteButton"); var unfavoriteButton = document.getElementById("unfavoriteButton"); if (user.likes.indexOf(window.location.href) > -1) { likeButton.innerText = "Liked"; } else { likeButton.innerText = "Like"; } if (user.favorites.indexOf(window.location.href) > -1) { favoriteButton.style.display = "none"; unfavoriteButton.style.display = "block"; } else { favoriteButton.style.display = "block"; unfavoriteButton.style.display = "none"; } } ``` 这段代码使用一个简单的JavaScript对象来表示用户的收藏点赞状态。当用户点击“Like”按钮时,当前页面的URL被添加到用户的点赞列表中。当用户点击“Favorite”按钮时,当前页面的URL被添加到用户的收藏列表中,并且“Favorite”按钮会被隐藏,显示“Unfavorite”按钮。当用户点击“Unfavorite”按钮时,当前页面的URL会从用户的收藏列表中移除,并且“Favorite”按钮会重新显示。在每次操作后,按钮状态会被更新,根据用户的收藏点赞状态设置按钮的文本和可见性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值