遇到一个问题,就是在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());```
网友评论