gpt4 book ai didi

android - GridView getChildAt() 返回 null

转载 作者:太空宇宙 更新时间:2023-11-03 11:59:02 26 4
gpt4 key购买 nike

我正在尝试从 GridView 获取 View 。不幸的是,它返回 null

onCreate():

GridView gridview = (GridView) findViewById(R.id.gridView);
gridview.getChildAt(3).setBackgroundResource(R.drawable.list_selector_holo_light);

gridview.getChildCount() 也返回 0!

我该怎么做才能获得这个 View ?我知道有一个选项可以更改适配器中的背景,但我必须动态地进行。

感谢您的帮助!


编辑

设置适配器:

gridview.setAdapter(new ImageAdapter(this));

图像适配器:

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;
}

最佳答案

GridView 将在第一次布局过程中从适配器填充自身。这意味着它不会在 onCreate() 中有 child 。等待第一次布局传递的最简单方法是使用 ViewTreeObserver(请参阅 View.getViewTreeObserver())注册全局布局监听器。第一次调用监听器时,网格应包含子项。

请注意,如果您想更改 GridView 的其中一个子项的背景,您确实应该从适配器中进行。由于 View 被回收,背景可能会在稍后“移动”到另一个 View 。

关于android - GridView getChildAt() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15838422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com