我有一个带有部分和条目的 listView。例如..
Supplies (Section Item)
Pens (Entry Item)
Pencils
Groceries
Eggs
Lettuce
Etc....
在我的列表适配器中,我通过这样做将部分项目的背景设置为各种颜色。
view.setBackgroundColor(Color.YELLOW);
这一切正常,直到我开始滚动,然后部分项目变成黑色(条目项目不这样做)。有谁知道如何防止这种情况?
getView() 方法的代码
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
final ItemEchelon i = items.get(position);
if (i != null) {
if(i.isSection()){
SectionItemEchelon si = (SectionItem)i;
v = vi.inflate(R.layout.item_section, null);
v.setOnClickListener(null);
v.setOnLongClickListener(null);
v.setLongClickable(false);
final TextView sectionView = (TextView) v.findViewById(R.id.tv_Name);
sectionView.setText(si.getTitle());
if(count == 0)
{
v.setBackgroundColor(Color.YELLOW);
}
if(count == 1)
{
v.setBackgroundColor(Color.GREEN);
}
if(count == 2)
{
v.setBackgroundColor(Color.RED);
}
if(count == 3)
{
v.setBackgroundColor(Color.GRAY);
}
count ++;
}else{
EntryItemEchelon ei = (EntryItemEchelon)i;
v = vi.inflate(R.layout.item_entry, null);
final TextView title = (TextView)v.findViewById(R.id.tv_entryTitle);
final TextView score = (TextView)v.findViewById(R.id.tv_entryScore);
if (title != null)
title.setText(ei.Name);
if(score != null)
score.setText(ei.Score);
}
}
return v;
}
通过删除用于更改背景颜色的 if 语句来修复问题。这样做是为了在构造 SectionItem 时必须初始化颜色。