网格视图设置背景颜色

时间:2014-02-19 09:05:16

标签: android android-layout gridview colors

我正在动态设置网格视图中存在的某些单元格的背景颜色。 问题是当我向下滚动时,错误的颜色被设置为某些单元格的背景。我正在回收视图。

public View getView(final int position, View convertView, ViewGroup parent)
{
    ViewHolder holder= new ViewHolder();
    if (convertView==null)
    {
        inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(layoutResourceId,parent,false);
        holder.textView=(TextView)convertView.findViewById(R.id.text);
        convertView.setTag(holder);
    }
    else
    {
        holder= (ViewHolder) convertView.getTag();
    }
    //System.out.println("the position is "+position);

    Date i = objects.get(position);

    try
    {
        if (i.getDate() == 1) 
        {
            holder.textview.setBackgroundColor(Color.BLUE);
            holder.textView.setText("Mon"+Integer.toString(i.getDate()));
        } 
        else 
        {
            holder.textView.setText(Integer.toString(i.getDate()));
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

有人可以指导我如何处理这个问题吗?

更新1:我解决了这个问题            我刚在else部分

中添加了以下语句
        if (i.getDate() == 1) 
        {
            holder.textview.setBackgroundColor(Color.BLUE);
            holder.textView.setText("Mon"+Integer.toString(i.getDate()));
        } 
        else 
        {
            holder.textView.setText(Integer.toString(i.getDate()));
            holder.textview.setBackgroundColor(Color.WHITE);
        }

2 个答案:

答案 0 :(得分:0)

使用此代码:

holder.textview.setVisibility(View.INVISIBLE);
try
{

 if (i.getDate() == 1) 
    {
        holder.textview.setBackgroundColor(Color.BLUE);
        holder.textView.setText("Mon"+Integer.toString(i.getDate()));
    } 
    else 
    {
        holder.textView.setText(Integer.toString(i.getDate()));

    }
}
catch (Exception e)
{
    e.printStackTrace();
}

 holder.textview.setVisibility(View.VISIBLE);

答案 1 :(得分:0)

试试这个..

public View getView(final int position, View convertView, ViewGroup parent)
{
    View view = convertView;
    final ViewHolder holder;
    if (convertView==null)
    {
        inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(layoutResourceId,parent,false);
        holder = new ViewHolder();
        holder.textView=(TextView) view.findViewById(R.id.text);
        view.setTag(holder);
    }
    else
    {
        holder= (ViewHolder) view.getTag();
    }
    //System.out.println("the position is "+position);

    Date i = objects.get(position);

    try
    {
        if (i.getDate() == 1) 
        {
            holder.textview.setBackgroundColor(Color.BLUE);
            holder.textView.setText("Mon"+Integer.toString(i.getDate()));
        } 
        else 
        {
            holder.textView.setText(Integer.toString(i.getDate()));
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
    return view;
}