我有一个网格视图,我使用自定义适配器填充。 在填充gridview时,我将每个元素都放在一个唯一的标记内。
填充此gridview后,我希望在gridview中找到其标记的特定元素。我怎么找到这个?
目前我正在这样做:
gridviewobject.findViewById(thetag);
// gridview object is the object of the gridview that i have populated.
答案 0 :(得分:15)
上面写的内容可以使用,除了知道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
执行类似的操作,但不是比较整数,而是比较标记(由于它们是对象而不是整数,因此速度较慢)