我有一个listfragment,我填充了一个扩展Base适配器的适配器。 我希望一个特定的textview具有不同的颜色。
这是我的目标:(原谅我的“标题”拼写,我很着急)
但是,当我上下滚动列表时,来自不同行的文本视图也会随机更改颜色,如下所示:
我尝试使用和不使用视图,但结果相同。我似乎无法找出问题所在。
这是我的getView方法
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolderItem viewHolder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.shedrow, null);
viewHolder = new ViewHolderItem();
viewHolder.txt=(TextView) convertView.findViewById(R.id.textview1);
viewHolder.txt2=(TextView) convertView.findViewById(R.id.textview2);
convertView.setTag(viewHolder);
}
else
{
viewHolder = (ViewHolderItem) convertView.getTag();
}
viewHolder.txt.setTypeface(tf);
viewHolder.txt2.setTypeface(tf);
viewHolder.txt.setText(schedStorage.getProgramTitle(position));
if (position==0)
{
viewHolder.txt2.setTextColor(color);
viewHolder.txt2.setTypeface(tf, Typeface.BOLD);
}
viewHolder.txt2.setText(sTimes.get(position));
return convertView;
}
答案 0 :(得分:2)
convertView是一个重用的View(Row)。当您向上和向下滚动并且第一行离开屏幕时,Android可能会选择在屏幕上显示新行时重复使用它。如果它被重用,txt2的颜色仍将设置为绿色。为避免这种情况,您应该在位置!= 0时设置txt2的颜色和字体。
if (position==0) {
viewHolder.txt2.setTextColor(color);
viewHolder.txt2.setTypeface(tf, Typeface.BOLD);
} else {
viewHolder.txt2.setTextColor(Color.BLACK);
viewHolder.txt2.setTypeface(tf, Typeface.NORMAL);
}