Android 尝试动态更改列表适配器中textview的颜色时会发生奇怪的变化

Android 尝试动态更改列表适配器中textview的颜色时会发生奇怪的变化,android,android-listview,baseadapter,Android,Android Listview,Baseadapter,我有一个listfragment,我正在用扩展基本适配器的适配器填充它。 我想在一个特定的文本视图是一个不同的颜色 这是我的目标:(请原谅我的“标题”拼写,我很匆忙) 但是,当我上下滚动列表时,来自不同行的文本视图也会随机更改颜色,如下所示: 我试过使用和不使用viewholder,结果都是一样的。我似乎找不出问题出在哪里 这是我的getView方法 @Override public View getView(int position, View convertView, ViewGro

我有一个listfragment,我正在用扩展基本适配器的适配器填充它。 我想在一个特定的文本视图是一个不同的颜色

这是我的目标:(请原谅我的“标题”拼写,我很匆忙)

但是,当我上下滚动列表时,来自不同行的文本视图也会随机更改颜色,如下所示:

我试过使用和不使用viewholder,结果都是一样的。我似乎找不出问题出在哪里

这是我的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;
}

convertView是一个重用视图(行)。当你上下滚动第一行离开屏幕时,Android可能会选择在屏幕上显示新行时重新使用它。如果重新使用,txt2的颜色仍将设置为绿色。为了避免这种情况,您应该在position!=0

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);
}

看起来您只设置了一次文本颜色,因此一旦视图设置为绿色,如果再次使用,它将永远不会重置为黑色