关于GridView和ListView的getChildAt返回null的问题的解析

遇到一个问题,就是在GridView不滚动的时候,getChildAt返回的值都是正确的,但是一滚动就会出现错位或者返回null。

后来找了很多资料,发现GridView和ListVIew采用回收机制,简单地说:如果屏幕最多可以显示n个子View,那么内存中其实就只有这n个子View。当滚动了之后,重新展现在眼前的n个View复用了之前的n个VIew。

所以在GridView和ListView中,getChildAt(int position)方法中的position指的是当前可见的第几个元素。

如果要获得GridVIew中的第n个View,那么position就是n-第一个可见View的位置

View view=gridView.getChildAt(n-gridVIew.getFirstVisiblePosition());```

你可能感兴趣的:(关于GridView和ListView的getChildAt返回null的问题的解析)