android–GridView getChildAt()返回null

android–GridView getChildAt()返回null,第1张

概述我正在尝试从GridView获取视图.不幸的是,它返回null.的onCreate():GridViewgridview=(GridView)findViewById(R.id.gridView);gridview.getChildAt(3).setBackgroundResource(R.drawable.list_selector_holo_light);gridview.getChildCount()也返回0!我该怎么做才能获得这

我正在尝试从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;}

解决方法:

GrIDVIEw将在第一次布局过程中从适配器填充自身.这意味着它不会在onCreate()中生成子项.等待第一个布局传递的最简单方法是使用VIEwTreeObserver(请参阅VIEw.getVIEwTreeObserver())来注册全局布局侦听器.第一次调用侦听器时,网格应包含子节点.

请注意,如果要更改GrIDVIEw的其中一个子项的背景,您应该从适配器执行此 *** 作.由于视图被回收,后台可能会在稍后“移动”到另一个视图.

总结

以上是内存溢出为你收集整理的android – GridView getChildAt()返回null全部内容,希望文章能够帮你解决android – GridView getChildAt()返回null所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1115532.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存