求解:listview窗口滚动后,item背景色混乱

时间:2021-07-30 17:03:17
我设计的listview列表中,通过改写getview()将前5行的背景色设置为黄色,后面的全为默认色。实际效果为:窗口出现时前5行为黄色,后面的行为默认色。窗口向上滚动后,后面的行应该都是默认色,但实际效果是,后面的行随机出现黄色背景。不解!求解!

实际图:
求解:listview窗口滚动后,item背景色混乱
窗口向下滚动后的效果:
求解:listview窗口滚动后,item背景色混乱
getview()的代码为:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// position为item的序号
View view = null;
if (convertView != null) {
view = convertView;
} else {
view = super.getView(position, convertView, parent);
}
if (position < 5) {
view.setBackgroundResource(R.drawable.goldclient);
}
return super.getView(position, view, parent);
}
恳请指点!

6 个解决方案

#1


解决了!
getview()的代码为:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// position为item的序号
View view = null;
if (convertView != null) {
view = convertView;
} else {
view = super.getView(position, convertView, parent);
}
if (position < 5) {
view.setBackgroundResource(R.drawable.goldclient);
}else{
view.setBackgroundResource(R.color.black);
}
return super.getView(position, view, parent);
}

#2


哈哈,聪明,我刚想跟你说来着,getview默认在加载下面的item的时候是去拿上面已经构造好的item的view的,你上面的那些背景是黄色,下面那些直接那view的item用的实际就是同一个view,背景也就是黄色了

#3


谢谢wenyiqingnianiii,我实在当不起“聪明”二字,呵呵

#4


看了很多列表滚动的问起 其实都是一个问题 记住list的列表项的view是缓存显示的,是重用的 所以你要差异化显示的时候,一定要记住需要有个条件能够把你想要的列表项精确地筛选出来,然后设置此项的效果,就不会影响到别的列表项了 

#5


该回复于2013-04-10 16:04:26被管理员删除

#6


谢谢haoyizsw,谨记在心!

#1


解决了!
getview()的代码为:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// position为item的序号
View view = null;
if (convertView != null) {
view = convertView;
} else {
view = super.getView(position, convertView, parent);
}
if (position < 5) {
view.setBackgroundResource(R.drawable.goldclient);
}else{
view.setBackgroundResource(R.color.black);
}
return super.getView(position, view, parent);
}

#2


哈哈,聪明,我刚想跟你说来着,getview默认在加载下面的item的时候是去拿上面已经构造好的item的view的,你上面的那些背景是黄色,下面那些直接那view的item用的实际就是同一个view,背景也就是黄色了

#3


谢谢wenyiqingnianiii,我实在当不起“聪明”二字,呵呵

#4


看了很多列表滚动的问起 其实都是一个问题 记住list的列表项的view是缓存显示的,是重用的 所以你要差异化显示的时候,一定要记住需要有个条件能够把你想要的列表项精确地筛选出来,然后设置此项的效果,就不会影响到别的列表项了 

#5


该回复于2013-04-10 16:04:26被管理员删除

#6


谢谢haoyizsw,谨记在心!