我正在动态设置网格视图中存在的某些单元格的背景颜色。 问题是当我向下滚动时,错误的颜色被设置为某些单元格的背景。我正在回收视图。
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);
}
答案 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;
}