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条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS关闭SELinux安全模块
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL8.0.19开启GTID主从同步CentOS8