有类似的问题被问到,但没有一个能解决我的问题。
我有一个填充了电子邮件的列表视图。我想要做的是在未阅读电子邮件时显示不同的文本颜色和字体。所以相关代码基本是这样的:
int color = isUnread ? R.color.color_email_unread : R.color.color_email_read;
viewHolder.subject.setTextColor(color);
if (isUnread){
Typeface font = FontFactory.getInstance().getFont(context, "MyFont");
viewHolder.subject.setTypeface(font);
}
但这里的问题是它不会改变一个特定的文本视图。假设第一封电子邮件未读,其余的已读。它使列表视图中的每个项目都以 color_email_read 字体颜色显示,并且也没有字体更改。
知道如何按照我想要的方式管理它吗?原因与 Android 没有重新使用视图但无法找出解决方案有关。
更新:它与 isUnread 返回的内容无关,因为它总是返回预期值:
01-30 16:47:42.837: D/EmailListAdapter(5837): isUnread: false
01-30 16:47:42.837: D/EmailListAdapter(5837): isUnread - subject: linktest3 - text color should be: 2131427330
0
01-30 16:47:42.872: D/EmailListAdapter(5837): isUnread: false
01-30 16:47:42.872: D/EmailListAdapter(5837): isUnread - subject: subjectttttttttt - text color should be: 2131427330
01-30 16:47:42.922: D/EmailListAdapter(5837): isUnread: false
01-30 16:47:42.922: D/EmailListAdapter(5837): isUnread - subject: unread test - text color should be: 2131427330
01-30 16:47:42.972: D/EmailListAdapter(5837): isUnread: true
01-30 16:47:42.972: D/EmailListAdapter(5837): isUnread - subject: from unread test - text color should be: 2131427340