关于BaseAdapter,SimpleAdapter的数据显示错乱问题,选中状态错乱问题,Checkbox选中状态错乱问题总结

来源:互联网 发布:台式电脑品牌推荐知乎 编辑:程序博客网 时间:2024/05/01 19:51


干货不上图,直接上分析和解决办法

今天有同事就GridView中某个item按下之后,显示效果的保存问题对我进行了询问,其实这个问题比较简单就是一些稍微深入一点的知识的理解:

基于Adapter的数据显示问题,经常会出现错乱的情况,我们怎么处理这个情况呢?

我们应该从Adapter的基本的加载原理入手,在BaseAdapter的getview的加载的时候我们如果复用了

contentView的话,系统在界面listview或者其他加载adapter的界面不发生大小变化的时候contentview是不会new的,

只会复用之前的contentview,这样的话,一屏的数据加载完毕后开始滚动的话,那个view中的数据消失,但是view的相关的显示状态还存在

所以如果某个item设置了选中状态,或者某个checkbox设置了check状态,这个view会加载新的数据,check状态在显示中就变化了

解决办法:

一、利用变量记录

        搞一个数据的集合,保存选中状态,getView的时候我们进行判断

二、利用属性的变化

       直接改变集合中对象的属性,这个地方肯定需要设计,一般是for循环的处理,显然耗时


如果还没有解决,那么恭喜你,你的getview里面的逻辑需要检查了

if 判断处理了UI,但是缺少else进行UI的再处理,这个地方很多实战较少的会缺乏相关的认识


以上对于GetView的方法进行了处理的相关的分析


如果你是SimpleAdapter的话出现了这个问题的话是怎么个情况呢?SimpleAdapter的问题请直接看内部的实现,一般不推荐用SimpleAdapter请大家使用BaseApdater数据源灵活,而且数据的加载很方便,还能定制相关需求

请正确使用BaseAdapter,加载数据显示这样就可以解决,整篇文章没有图片,不过如果按照文章中的方法去做是没有问题的

0 0
原创粉丝点击