0

如何仅设置 gridView 中的第一行颜色?我尝试使用此代码,但这在我滚动网格之前效果很好,而不是我用我的颜色设置了多个单元格。谁能帮我这个?

public View getView(int position, View convertView, ViewGroup parent) {
    View view = convertView;

    if (convertView == null) {

        LayoutInflater li = getLayoutInflater();
        view = li.inflate(R.layout.main, null);
    }

    if (position == 0)
        view.setBackgroundColor(0x30FF0000);
    return view;

}
4

2 回答 2

1

if (position == 0) view.setBackgroundColor(0x30FF0000); 否则 view.setBackgroundColor(0x00000000);

适配器总是有缓存

于 2013-05-27T08:44:00.500 回答
1

这是因为视图重用。convertView滚动时弹出的视图与从另一侧出现的回收视图相同。所以它仍然具有先前设置的背景。您可以添加此行来防止这种情况:

public View getView(int position, View convertView, ViewGroup parent) {
    View view = convertView;

    if (convertView == null) {

        LayoutInflater li = getLayoutInflater();
        view = li.inflate(R.layout.main, null);
    }

    if (position == 0)
        view.setBackgroundColor(0x30FF0000);
    else  view.setBackgroundColor(/*default color for the other rows*/);
    return view;

}
于 2013-05-27T08:44:13.957 回答