2

我正在使用自定义 ListView 。它工作正常。我正在使用此ListView 来区分已读和未读消息我拿起消息已读 ID,未读消息为 0,已读消息为 1。我的 getView() 代码如下:---

public View getView(int position, View convertView, ViewGroup parent) 
{
    ViewHolder holder;
    if(convertView==null)
    {
        convertView=mInflater.inflate(R.layout.custom_home_list, null);
        holder=new ViewHolder();
        holder.address=(TextView)convertView.findViewById(R.id.person_name);
        holder.body=(TextView)convertView.findViewById(R.id.full_msg);
        holder.date=(TextView)convertView.findViewById(R.id.msg_time);
        convertView.setTag(holder);
    }else
    {
        holder=(ViewHolder)convertView.getTag();
    }
    int size=mArrList.size();
    if ((mArrList != null) || size > 0) 
    {
        if(mArrList.get(position).read.equalsIgnoreCase("1")){
        holder.address.setText(mArrList.get(position).address);
        holder.body.setText(mArrList.get(position).body);
        holder.date.setText(mArrList.get(position).date);
        }else{
            holder.address.setText(mArrList.get(position).address);
            holder.body.setText(mArrList.get(position).body);
            holder.body.setTextColor(mArrList.get(position).color);
            holder.date.setText(mArrList.get(position).date);
        }
    }
    return convertView;
}

在这里,我使用此条件进行区分:-

 if(mArrList.get(position).read.equalsIgnoreCase("1")){
   }

但是在 5 个项目后重复位置,所以我的条件不起作用。我有很多搜索,但我没有得到它。请帮我 。提前致谢!问候迪潘克

4

1 回答 1

0

在您的代码中,您没有明确设置颜色以防“读取”状态(if/else 的第一部分)。

这意味着如果您的视图被回收并且之前用于“未读”项目,那么颜色将保持不变。

在这两种情况下,您都需要明确说明您想要哪种颜色,因为您无法知道初始颜色是什么。

于 2012-11-06T14:03:50.270 回答