У меня есть действие с ListView, которое заполняется через пользовательский ArrayAdapter. Существует массив объектов, которые имеют логическое свойство, называемое isRead. Основываясь на значении этого свойства, я хочу установить шрифт одного из TextViews в строке на «нормальный» или «жирный». Я также установил цвет текста «серый» или «черный»
Когда активность запускается изначально, все работает как положено. Если isRead имеет значение true, текст серый с обычным шрифтом. Когда я прокручиваю список вниз и снова прокручиваю вверх, текст объекта, для которого isRead имеет значение true, окрашивается в серый цвет, но шрифт выделяется жирным шрифтом.
Я что-то здесь не так делаю? Или это какая-то странность Android?
Код ArrayAdapter ниже:
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View row = convertView;
ArticleListRowViewWrapper wrapper=null;
if (row == null) {
row=inflater.inflate(R.layout.articlesrow, parent, false);
wrapper = new ArticleListRowViewWrapper(row);
row.setTag(wrapper);
} else {
wrapper = (ArticleListRowViewWrapper)row.getTag();
}
Article a = articles.get(position);
String dateString = df.format(a.getPubDate());
TextView titleLabel=wrapper.getTitleLabel();
Typeface tf = titleLabel.getTypeface();
if (a.getIsRead()) {
titleLabel.setTextColor(Color.GRAY);
titleLabel.setTypeface(tf, Typeface.NORMAL);
} else {
titleLabel.setTextColor(Color.BLACK);
titleLabel.setTypeface(tf, Typeface.BOLD);
}
titleLabel.setText(a.getTitle());
TextView dateLabel =wrapper.getDateLabel();
dateLabel.setText(dateString);
return row;
}
}