0
我有一個ListView活動,通過自定義的ArrayAdapter進行填充。有一個對象的數組具有名爲'isRead'的布爾屬性。根據此屬性的值,我想將該行中某個TextView的字體設置爲「普通」或「粗體」。我還將文本的顏色設置爲「灰色」或「黑色」在ListView中設置TextView屬性 - 奇怪的結果
當「活動」最初啓動時,所有內容都按預期工作。如果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;
}
}
你在哪裏調用setRead()?你還可以發佈這部分代碼嗎?重要的是要提到,如果你滾動,視圖再次繪製。 – RoflcoptrException 2010-05-20 14:45:50
除了Sebi說的話,我想可能是因爲你在上下滾動時重複使用視圖對象。但是,我看不出有什麼明顯的問題,你正在做什麼... – 2010-05-20 17:41:25
我得到的結果證明是閱讀設置正確。文本顏色是灰色或黑色,具體取決於isRead屬性的狀態。但是,字體在第一次繪製時爲NORMAL,如果在視圖之外滾動並返回到視圖中,字體爲BOLD。文字顏色保持一致。 – deSelby 2010-05-21 20:28:12