我设计的listview列表中,通过改写getview()将前5行的背景色设置为黄色,后面的全为默认色。实际效果为:窗口出现时前5行为黄色,后面的行为默认色。窗口向上滚动后,后面的行应该都是默认色,但实际效果是,后面的行随机出现黄色背景。不解!求解!实际图:窗口向下滚动后的效果: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);
}
恳请指点!

解决方案 »

  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是缓存显示的,是重用的 所以你要差异化显示的时候,一定要记住需要有个条件能够把你想要的列表项精确地筛选出来,然后设置此项的效果,就不会影响到别的列表项了