gridview里用setBackgroundColor改变了子项颜色,滚动后为什么就错乱了。解决思路

gridview里用setBackgroundColor改变了子项颜色,滚动后为什么就错乱了。
在activity里定义onWindowFocusChanged
public void onWindowFocusChanged(boolean hasFocus){
for (int i=0;i<=20;i++)
{
if (gvTable.getChildAt(i)!=null)
{
gvTable.getChildAt(i).setBackgroundColor(Color.YELLOW);

}

}
super.onWindowFocusChanged(hasFocus);


目的是想在activity的gridview中,将不同的item标记成不同颜色,但如果item在gridview可视范围内,则设置颜色都是正确的,但如果gridview来回滚动后,设置的颜色就错乱了。
------解决思路----------------------
if (gvTable.getChildAt(i)!=null)在这里能判断是不是你要的目标吗
------解决思路----------------------
为什么不在Adapter的getView中写呢,超出屏幕后,隐藏的item会被复用进入getView中

如果想实现相间颜色,你在getView中计算position区分奇偶行显示