Android:当我使用scrollTo(x,y)滚动ListView时,ListView不会重绘

时间:2013-02-10 14:11:43

标签: android listview

  1. 我的ListView在后台(使用相对布局)。
  2. 我有一个文本框,在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;
    }
    
  3. 因此,您会看到使用位置设置文本框背景颜色。

    1. 现在我使用ListView.scrollTo(x,y)函数向上滚动ListView。
    2. 现在,由于文本框的背景是从位置计算的,当ListView向上滚动时,应该为显示的新行显示正确的文本框颜色。但这不会发生。由于向上滚动而暴露的ListView中的所有项目都具有相同的黑色背景。
    3. 任何想法,如何刷新/重绘ListView视图,或上述代码中发现的任何问题?

1 个答案:

答案 0 :(得分:1)

您可以通过调用适配器的notifyDataSetChanged()方法刷新ListView。您可以尝试在scrollTo之后调用它,即使通常应该在基础数据集更改为刷新视图项时调用它。