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条评论来说两句吧...