- 我的 ListView 在后台(使用相对布局)。
我有一个文本框,用作 ListView 中的视图,为不同的行设置不同的背景颜色。这是使用适配器中的以下代码完成的。
public View getView(int position, View convertView, ViewGroup parent) { View rowView = convertView; if (rowView == null) { LayoutInflater inflater = ((Activity)context).getLayoutInflater(); rowView = inflater.inflate(R.layout.listview_background, null); rowView.setTag(new ViewHolder((TextView) rowView.findViewById(R.id.listBackgroundTV))); } ((ViewHolder)rowView.getTag()).tv.setHeight((position != 0)?((CompareTextBox)((Activity)context).findViewById(R.id.ctb1)).getLineHeight():((CompareTextBox)((Activity)context).findViewById(R.id.ctb1)).getLineHeight() + (int) (context.getResources().getDisplayMetrics().density + 0.5f)); ((ViewHolder)rowView.getTag()).tv.setBackgroundColor((b[position])?0xff000000:0xffffffff); return rowView; }
所以你看到文本框的背景颜色是使用位置设置的。
- 现在我使用 ListView.scrollTo(x,y) 函数向上滚动 ListView。
- 现在,由于文本框的背景是根据位置计算的,当 ListView 向上滚动时,应该为显示的新行显示文本框的正确颜色。但这并没有发生。ListView 中由于向上滚动而暴露的所有项目都具有相同的黑色背景。
任何想法,如何刷新/重绘 ListView 视图,或者上面代码中发现的任何问题?