我正在尝试从GridView获取视图。不幸的是,它会返回null
。
的onCreate():
GridView gridview = (GridView) findViewById(R.id.gridView);
gridview.getChildAt(3).setBackgroundResource(R.drawable.list_selector_holo_light);
gridview.getChildCount()
也会返回0!
我该怎么做才能获得此视图?我知道有一个选项可以更改适配器中的背景,但我必须动态地执行它。
感谢您的帮助!
修改的
setAdapter:
gridview.setAdapter(new ImageAdapter(this));
ImageAdapter:
public View getView(int position, View convertView, ViewGroup parent) {
final ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
答案 0 :(得分:9)
GridView
将从适配器填充自身。这意味着onCreate()
中不会有子女。等待第一个布局传递的最简单方法是使用ViewTreeObserver
(请参阅View.getViewTreeObserver()
)注册全局布局侦听器。第一次调用侦听器时,网格应包含子节点。
请注意,如果您想要更改GridView
其中一个子项的背景,您应该从适配器执行此操作。由于视图被回收,后台可能会在以后“移动”到另一个视图。