How to find element inside a gridview in Android?

二次信任 提交于 2019-11-28 00:09:32

问题


I have a grid view which I populate using a custom adapter. While populating the gridview I give each element inside a unique tag.

Once this gridview is populated, I wish to find a specific element inside the gridview with its tag. How do I find this?

Currently I'm doing this:

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

回答1:


What you have written above will work, except be aware that a) searching for a view by its tag is probably the slowest method you could use to find a view and b) if you try requesting a view with a tag and that view is not currently visible, then you will get null.

This is because GridView recycles its views, so essentially it only ever makes enough views to fit on screen, and then just changes the positions and content of these as you scroll about.

Possibly a better way might be to do

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);
    }
}

Essentially findViewWithTag does something similar, but rather than comparing integers it compares the tags (which is slower since they're objects and not ints)



来源:https://stackoverflow.com/questions/5976533/how-to-find-element-inside-a-gridview-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!