zoukankan      html  css  js  c++  java
  • Android中GridView、ListView 的 getChildAt() 方法返回null 问题

      开发的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());
    

      

  • 相关阅读:
    编写高质量的代码,改善c#程序的157个建议_之1~10
    文件指针创建失败!File *fp失败
    一拜天地
    现金流中的机会,及其评估(摘抄)
    隐藏Mac Dock 中的某个图标
    vim快捷方式
    mac 快捷键
    mysql explain
    druid 连接池配置
    分布式数据库中间件
  • 原文地址:https://www.cnblogs.com/Herzog3/p/5759815.html
Copyright © 2011-2022 走看看