开发的Android app用到了GridView或者ListView,通常使用getChildAt(int position)方法获取当前点击或者选中的View(即position对应的View)。

  当ListView、GridView没有滑动的时候,可以正常地获取到index对应的View;但是当ListView、GridView滑动之后,却获取到null或者一个存在偏移量的View,而并不是想要获取的View。

  问题的根源在于对getChildAt(int position)方法的理解存在错误。ListView和GridView采用了View回收机制。简单来说就是如果屏幕最多可以显示N个ChildView,那么在内存中也就只存在这N个ChildView,当屏幕滚动的时候,第(N+1)个ChildView就会复用第一个View,以此类推。

所以,在GridView和ListView中,getChildAt(int position)方法的参数position指的是当前可见区域中的ChildView位置。

  如果要活的GridView的第N个ChildView,则position就是N减去第一个可见的ChildView的位置,代码实现如下:

  

View view = listView.getChildAt(i - listView.getFirstVisiblePosition());

  

最新文章

  1. gulp初学
  2. REDHAT一总复习1 cups 打印服务配置
  3. 如何让一个类可以被foreach枚举?
  4. php数字补零的两种方法
  5. Hibernate大福利 下载链接
  6. 【转】CSS深入理解流体特性和BFC特性下多栏自适应布局
  7. css仅在指定ie浏览器生效
  8. P1912: [Apio2010]patrol 巡逻
  9. 容器的end()方法
  10. 从零开始学习jQuery (九) jQuery工具函数
  11. cmake简易教程
  12. ubuntu之安装java浏览器插件
  13. Git本地分支版本号过低导致的push错误 error: failed to push some refs to ... 及兴许amend
  14. #include<bits/stdc++.h>
  15. 回顾2017系列篇(二):移动端APP设计趋势
  16. 高性能网络 SR-IOV机制--VF与PF的通信
  17. 测者的测试技术手册:AI的自动化单元测试
  18. Redis最新面试题26题(初级、中级Redis面试题)
  19. P1288 取数游戏II
  20. UT, FT ,E2E 测试的意思

热门文章

  1. CSS3 filter(滤镜) 属性
  2. 目标检测中proposal的意义
  3. fpga之显示字符串
  4. 工厂模式Assembly.Load(path).CreateInstance 反射出错解决办法
  5. 【jquery、XML】jquery通过按钮使打开select
  6. DFS - leetcode [深度优先遍历]
  7. 《HTML5与CSS3权威指南》读书笔记(上册)—HTML5篇
  8. 生成元(Digit Generator,ACM/ICPC Seoul 2005,UVa 1583)
  9. 30分钟掌握ES6/ES2015核心内容
  10. cocos2d-js引擎学习笔记