我有一个使用自定义适配器填充的网格视图。在填充 gridview 时,我给每个元素一个唯一的标签。
填充此网格视图后,我希望在网格视图中找到带有其标记的特定元素。我怎么找到这个?
目前我正在这样做:
gridviewobject.findViewById(thetag);
// gridview object is the object of the gridview that i have populated.
我有一个使用自定义适配器填充的网格视图。在填充 gridview 时,我给每个元素一个唯一的标签。
填充此网格视图后,我希望在网格视图中找到带有其标记的特定元素。我怎么找到这个?
目前我正在这样做:
gridviewobject.findViewById(thetag);
// gridview object is the object of the gridview that i have populated.
您在上面写的内容将起作用,除了要注意 a)通过其标签搜索视图可能是您可以用来查找视图的最慢的方法,并且 b)如果您尝试请求带有标签的视图并且该视图不是当前可见,那么您将获得null
.
这是因为GridView
它回收了它的视图,所以本质上它只会产生足够的视图来适应屏幕,然后在你滚动时改变它们的位置和内容。
可能更好的方法可能是
final int numVisibleChildren = gridView.getChildCount();
final int firstVisiblePosition = gridView.getFirstVisiblePosition();
for ( int i = 0; i < numVisibleChildren; i++ ) {
int positionOfView = firstVisiblePosition + i;
if (positionOfView == positionIamLookingFor) {
View view = gridView.getChildAt(i);
}
}
本质findViewWithTag
上做了类似的事情,但不是比较整数,而是比较标签(因为它们是对象而不是整数,所以比较慢)