我想从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));
答案 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,只需放在那里。