您现在的位置是:首页 > 文章详情

Android中 ListView,RecyclerView中item显示错位的问题?

日期:2018-04-25点击:498

因为在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的背景


原文链接:https://yq.aliyun.com/articles/660685
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章