让收藏、点赞的即时状态的交互正确的显示在ListView上
2014-11-08 11:44
190 查看
通过上面的两张图片能够清楚的看到:收藏按钮(五角星)、点赞按钮(赞的数目);
在做项目的时候,这个时很常见的。先讲解一下我的需求:
对于收藏:首先,这个具有收藏按钮交互的页面在整个项目中大约有13+个;若算上,选项标签那就多的没法数了,也就是说页数基本上是不确定的;当点击该收藏按钮,会被点亮;再次点击则恢复原状态。中间在每次点击,操作成功之后会向服务器交互更新后台的收藏状态数据,便于下次进入时候保持收藏或者未收藏的状态。
对于点赞;基本上和收藏是一样的,只是多了赞的数量,要随着点击交互儿即时的改变赞的数字显示;
然后,问题出现了!
首先,说listView的机制。listView如果在第一次进入该页面而不让listView一次加载你所请求的所有item,而是根据手机屏幕显示的数量进行加载listView的item数量。当加载完第一版(手机屏幕所显示的item)之后,你拖动listView向上滑动来显示余下的你所请求的item。那么每显示下一条adapter 中 的 getView();就会被调用一次来设置这条item的数据以及view展示。然后,如果你再次的把listView向下拖动来显示listView的前几条信息,上面被遮挡隐藏的item每显示一条,adapter
中的 getView();又会被重写加载一次来设置该条item的数据以及view显示;
所以,如果你使用一般的方式当你点击收藏或者赞的按钮之后,并且即时的设置了ta的状态。当你遮盖住ta之后,再次把他拖出来的时候,会经惊讶的发现“怎么跟没有做操作的时候状态一模一样?”。再则,这些肯定是在你本地进行的,不可能直接同步到后台然后在调用新的已经更改股状态 的数据进行填充listView显示;因为这样太过于消耗手机内存了,而且每次交互都要重新加载页面,重新请求数据,这样深深的给用户带来了反感的体验。估计随即就把你的应用卸载了!然后,如果使用记住你的交互状态的话,对于单独页面也可能会行得通,但是对于几十个这样的页面,你要做多少重复多余的代码,估计你也能估算一下。还是太麻烦!
然后,这里我就分享一下我搞弄了三天的能够完美解决这种交互状态一直延续下去并且能与后台服务器同步的思路:
比如收藏的按钮,当你点击了收藏的按钮并向后台提交了状态之后。滑动listView之所以会出现bug,是因为此时没有发生变化的就是你本地的状态数据没有改变。然后,你的listView就会加载设置过时的老数据显示在listView 的 item上。所以,在listView无论社么时候加载设置数据,在为了让item显示正确的内容,一定要保证本地数据和后台数据的一致性。而本地含有此状态的数据一般有:包含该状态的对象什么的,也就是有:数据库表、该类的bean类对象、adapter进行适配的该类的bean类对象等之类;然后当你点击交互之后,向后台提交你的收藏状态之后,就要随即的更新你本地的所有的保存了该收藏交互的状态。这样就同等于你的本地数据一直就与后台数据同步!然后,无论你怎么滑动你的listView,ta都会加载设置正确的数据进行显示!!
相关文章推荐
- android ListView CheckBox全部选定并正确显示复选状态(非显示条目)
- ListView listCtrl 不能显示和不能正确添加行数据以及列表题不能显示问题
- android listview选中某一行,成选中状态颜色高亮显示
- ListView(ScrollView)嵌套ListView、GridView显示不全,内容大于一行计算的高度不正确的解决办法
- Android Xlistview 或者 listview改变控件显示隐藏,chekBox状态发生改变,下拉,上划出现错乱。
- 选择ListView的某个item显示选中状态
- 数据绑定控件Repeater/GridView/DataList在前台显示正确的文本格式收藏
- 实现ScrollView中包含ListView,动态设置ListView的高度(listview不能显示全,不能正确计算item的高度)
- Listview中图片加载使用Volley框架时,出现图片显示不正确的问题的解析
- android listview选中某一行,成选中状态颜色高亮显示
- Android 下载模块,使用Xutils3 的下载功能,Activity和services数据交互,listview显示下载进度
- 跨线程为控件赋值并保持listview选中状态以及在可见区域显示
- Android入门程序(ListView包括一个网络状态显示)
- ListFragment的ListView.CHOICE_MODE_SINGLE激活状态显示问题
- Android-ScrollView中listview控件高度正确显示
- Android-ListView状态保存以及和Activity进行交互
- android listview选中某一行,成选中状态颜色高亮显示
- listview item复用会造成显示不正确
- listview乱跳问题-listview乱跳问题:最后状态正确,就是执行动画过程有问题,点击某一个条目中的展开全文按钮,其它的条目也都会走一下动画展开一下,随后又恢复。但最后好、状态都是正确的。
- 分别设置listview加载中、空数据、加载数据失败三种状态的显示