以下问题:在显示项目列表时,我使用自定义ArrayAdapter并实现ViewHolder模式。我也使用convertViews。 在加载时,一切都很好,列表项以正确的交替颜色显示。
但是当我快速上下滚动时,颜色会发生变化而不再交替... 例如加载时:绿色,蓝色,绿色,蓝色...... 滚动后:绿色,蓝色,绿色,绿色,绿色,绿色....
以下是一些代码:
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ViewHolder holder;
StoreTemplate curr = templates.get(position);
if (convertView == null) {
convertView = inflater.inflate(R.layout.template_store_rowlayout,
parent, false);
holder = new ViewHolder();
holder.name = (TextView) convertView
.findViewById(R.id.name);
// more attr skipped here...
}
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.name.setText(curr.getName());
// more attr set here...
// this changes background
if ((position % 2) == 0) {
convertView.setBackgroundColor(context.getResources().getColor(
R.color.background_green));
}
// code skipped here
return convertView;
}
我怎么能保证,即使我滚动,搜索并重新加载列表,行也始终是彩色的?
答案 0 :(得分:3)
您忘记了要更改行背景的else
if statement
部分。您可能想尝试这样:
// this changes background
if ((position % 2) == 0) {
convertView.setBackgroundColor(context.getResources().getColor(
R.color.background_green));
} else {
convertView.setBackgroundColor(context.getResources().getColor(
R.color.your_color));
}