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来回滚动后,设置的颜色就错乱了。
gridview android 滚动 背景色 错乱

------解决方案--------------------
if (gvTable.getChildAt(i)!=null)在这里能判断是不是你要的目标吗
------解决方案--------------------
为什么不在Adapter的getView中写呢,超出屏幕后,隐藏的item会被复用进入getView中

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