if (convertView == null) {
vh = new ViewHolder();
convertView = inflater.inflate(R.layout.search_dtl_grid, parent, false);
// vh.llMain = (LinearLayout) convertView.findViewById(R.id.sdg_ll_main);
if (pos % 2 == 0) {
convertView.setBackgroundColor(Color.parseColor("#A4A4A4"));
} else{
convertView.setBackgroundColor(Color.parseColor("#FFFFFF"));
}
我在适配器中尝试了上面的代码该列表带有替代颜色但是当我们向下滚动时颜色会改变它的位置,就像它们首先变成灰白色灰色白色但是在向上或向下滚动之后它会变成灰色灰色白色灰色像这样的白色白色,我已经搜索了这个很多解决方案,因为他们说要添加第二种颜色的其他部分我已经做过但仍然没有成功。请给我一个很好的解决方案。谢谢
答案 0 :(得分:2)
当您在ViewHolder
(您应该做的事情)中使用ListView
模式时,您必须先了解它。
Android会重复使用您已夸大的观看次数。所以你必须区分两种情况:
在第一种情况下,您必须为视图充气,创建ViewHolder
并将其设置为视图标记。
在第二种情况下,您唯一需要做的就是恢复ViewHolder
对象。
之后,使用ViewHolder
。看看this example。
在具体案例中,解决方案将类似于:
if (convertView == null) {
inflateView(...);
createViewHolder(...);
} else {
recoverViewHolder(...);
}
if (pos % 2 == 0) {
convertView.setBackgroundColor(Color.parseColor("#A4A4A4"));
} else{
convertView.setBackgroundColor(Color.parseColor("#FFFFFF"));
}