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

use*_*849 9 android android-gridview

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

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

目前我这样做:

gridviewobject.findViewById(thetag);
// gridview object is the object of the gridview that i have populated.
Run Code Online (Sandbox Code Playgroud)

Jos*_*arl 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

基本上findViewWithTag做类似的事情,但不是比较整数,它比较标签(由于它们是对象而不是整数,因此速度较慢)