如何在Android中的gridview中找到元素?

时间:2011-05-12 10:18:51

标签: android android-gridview

我有一个网格视图,我使用自定义适配器填充。 在填充gridview时,我将每个元素都放在一个唯一的标记内。

填充此gridview后,我希望在gridview中找到其标记的特定元素。我怎么找到这个?

目前我正在这样做:

gridviewobject.findViewById(thetag);
// gridview object is the object of the gridview that i have populated.

1 个答案:

答案 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执行类似的操作,但不是比较整数,而是比较标记(由于它们是对象而不是整数,因此速度较慢)