我有一个网格视图,我使用@R_301_451@适配器填充.
在填充gridview时,我将每个元素放在一个唯一的标签中.
在填充gridview时,我将每个元素放在一个唯一的标签中.
一旦这个gridview被填充,我希望在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做类似的事情,但是比较整数比较它比较标签(这是比较慢,因为它们是对象而不是int)