就是在getView方法中加了一个判读,如果新闻是已读的话,就把它设置成灰色,但是把读过的新闻设置成
灰色的之后,在滚动view的时候,其它的新闻的颜色也会改变
ViewHolder的代码如下://保存每条新闻的类
public final class ViewHolder{
    TextView newstitle;//新闻标题
    TextView updatetime;//新闻更新的时间
}getView方法代码:public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder=null;
if(convertView==null){//第一次显示的时候
convertView=mInflater.inflate(R.layout.newsitem, null);
viewHolder=new ViewHolder();
viewHolder.newstitle=(TextView)convertView.findViewById(R.id.newsTitle);
viewHolder.updatetime=(TextView)convertView.findViewById(R.id.updateTime);
convertView.setTag(viewHolder);
}else{//之前已经显示过,再次显示
viewHolder=(ViewHolder)convertView.getTag();
}
NewInfo newsInfo = newsList.get(position);
TextView title = viewHolder.newstitle;
TextView updatetime = viewHolder.updatetime;

title.setText(newsInfo.getTitle());
updatetime.setText(newsInfo.getPubDate());
title.setTextColor(R.color.blue);
updatetime.setTextColor(R.color.lightslategrey);
if(newsInfo.getRead_flag() == 1){
Log.v("hachi","已读");
title.setTextColor(R.color.grey);
updatetime.setTextColor(R.color.grey);
}
return convertView;
}

解决方案 »

  1.   

    convertView回收再利用问题~ 上次变成灰色的convertView在下拉时被重用时依然是灰色加个else把它变回初始状态就好了。if(newsInfo.getRead_flag() == 1){
            Log.v("hachi","已读");
            title.setTextColor(R.color.grey);
            updatetime.setTextColor(R.color.grey);
        }else {title.setTextColor(R.color.black);
            updatetime.setTextColor(R.color.black);
    }