在我的具体问题中,我有一个列表视图。在此列表视图中,我希望列表的第一行始终具有绿色背景色。我使用以下代码实现了这一点:
listView.setSelection(3);
View element = listView.getChildAt(0);
element.setBackgroundColor(Color.GREEN);
在背景中,我使用自定义适配器填充列表视图,随着行被回收,绿色对于出现的新行是多余的。以下是我的 getView 方法代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View first = listView.getChildAt(0);
if (convertView == null){
convertView = inflater.inflate(R.layout.list, parent, false);
}
TextView textView = ((TextView) convertView.findViewById(R.id.textView2));
textView.setText(lyrics[position]);
if(){ // Need to reference the first row here.
textView.setBackgroundColor(Color.GREEN);
}else {
textView.setBackgroundColor(Color.WHITE);
}
return convertView;
}
}
所以在我的情况下,我需要知道列表视图中的第一个可见位置,以便我可以撤消重复的背景颜色。有什么方法可以实现这一目标吗?只要可行,我也愿意改变逻辑。