等到View在Activity上可见

时间:2014-02-25 15:28:30

标签: android listview view

我想从ListView获取子视图,但方法

如果视图在屏幕上实际不可见,则

listview.getChildAt(pos)会返回null。在

的尾部调用方法

protected void onCreate(Bundle saved)也会返回null,因为看起来用于充气视图的后台进程仍在后台运行。如何在调用getchildAt(pos)之前检查视图是否在屏幕上实际可见。我已经尝试使用30ms的计时器,它确实在那时返回正确的对象,但我不想使用硬编码到应用程序中的值。

编辑代码:

我正在尝试动态修改单个项目的背景颜色:

View view = list.getChildAt(list.getFirstVisiblePosition());

View.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_bright));

1 个答案:

答案 0 :(得分:3)

  

我正在尝试修改单个项目的背景颜色   动态

在ListView中实现这一目标的最简单方法可能是扩展/自定义适配器。

例如:

list.setAdapter = new ArrayAdapter( /* do here all initialisation of the adapter */){

    public View getView(int position, View convertView, ViewGroup parent) {
        View v = super.getView(position, convertView, parent);
         v.setBackgroundColor( /* your color goes here */ );
    }
}

当然你可以将它用于任何类型的适配器,包括它是你自己的CustomAdapter,只需放在那里。