Android中 ListView,RecyclerView中item显示错位的问题?
因为在Adapter中,为了性能都会给ViewHolder做缓存,防止ListView,RecyclerView创建过多的itemView,消耗过多的性能
下面就以ListView和BaseAdapter简单地讲一下,代码很简单:
@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null){ holder = new ViewHolder(); convertView = layoutInflater.inflate(R.layout.item,null); holder.button = convertView.findViewById(R.id.button); convertView.setTag(holder); }else { holder = (ViewHolder) convertView.getTag(); } holder.button.setText(""+position); if (position % 3 == 0){//当position能被3整除时,就改变其背景颜色 holder.button.setBackgroundColor(Color.BLUE); } return convertView; }
正常情况,如下图
当我们多滑动几次后
就会出现如上图的错位情况,解决办法也很简单
if (position % 3 == 0){ holder.button.setBackgroundColor(Color.BLUE); }else { holder.button.setBackgroundColor(Color.GRAY); }
对每个holder的背景都重新设置一次,防止item使用缓存中item的背景
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android中将APK放入系统APK目录中,找不到so文件
如题,将APK直接放入系统目录中,会导致APK找不到so文件,正常情况下的安装是使用PackageManager,它会将so文件拷入系统读取的so文件夹目录下,提供给App使用 ; 系统应用就是不会使用PackageManager去安装,所以在使用系统应用前,提前将so文件拷入到so文件夹目录下,重启后,App 就可以调用so文件了
- 下一篇
Android中gradle文件中implementation和compile的异同
相同之处:都是为Module添加依赖 不同之处:implementation不可以依赖传递,但是compile可以依赖传。这是什么意思呢?有经验的开发人员基本上都了解,举个例子,如果一个App依赖于libA,libA又依赖于libB,那么App可以调用libB中的方法吗? 经过验证,如果App implementation libA (libA implementation libB),那么App是无法调用libB中的方法,如果使用complie的话,App 就可以调用libB中的方法 当然,推荐还是implementation,避免跨依赖调用,导致模块之间耦合性过高,管理起来混乱
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Mario游戏-低调大师作品
- 2048小游戏-低调大师作品
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Red5直播服务器,属于Java语言的直播服务器
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库