【发布时间】:2011-03-20 15:01:54
【问题描述】:
我一直在尝试重新设置 ImageView 的大小。 我正在使用自定义适配器。
View row = convertView;
if (row == null) {
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.grid_item, null);
}
thumb = (ImageView) row.findViewById(R.id.bookThumb);
当我使用 ImageView thumb = (ImageView) row.findViewById(R.id.bookThumb);在自定义适配器内部它工作得很好,但是因为它循环遍历每一行,所以滚动非常慢。
所以...我现在正在尝试获取 thumb = (ImageView) row.findViewById(R.id.bookThumb);从我的 Main Activity 并设置它的大小,但我得到 Null,因此应用程序强制关闭。
试过了:
LinearLayout layout = (LinearLayout) findViewById(R.id.gridLayout);
ImageView thumbRow = (ImageView)layout.findViewById(R.id.bookThumb);
也试过了:
// gv is the gridview (R.id.gridview)
ImageView thumbRow = (ImageView)gv.findViewById(R.id.bookThumb);
总是为空。
感谢任何帮助!感觉我错过了一些愚蠢的东西:)
【问题讨论】:
-
尝试使用
hierarchyviewer来查看您的视图层次结构实际上是什么样的。 -
您在主要活动中的哪个位置执行此操作?是在调用 setContentView 之后吗?
-
@Gil,我会尝试使用它...谢谢。 @slund,是的,之后。此外,检查 android.R 的任何错误导入,使用 /> 而不是 关闭 ImageView,并且基本上完成了我在 google 上找到的所有内容 :)
-
当您使用适配器时,我想有很多元素的 ID 为
R.id.bookThumb。如果视图层次结构的某个分支包含许多具有相同 id 的元素,并且您从该分支的根调用findViewById(),它将返回 null,因为它不知道您想要哪个。 -
@bigstones - 你当然是对的。我的问题是如何为所有 bookThumb imageviews 设置它?当我通过适配器设置宽度时,它可以工作,但滚动速度很慢。