问题:
ListView显示一屏的时候,操作(删除)都是正确的,但是超过一屏的时候,操作就会出问题,程序会崩溃.
方法:
单步调试发现是在getChildAt函数返回的View为NULL,导致程序崩溃.
开始以为是因为Adapt出错了,后来看看没有问题,就直接查找的Android 源代码,后来发现对getChildAt(int position) 中的参数理解错了,参数中的position是显示的Item里面的第几个,不是整个Item里面的第几个,就是说position是当前可见区域的第几个元素,找到问题,就想解决办法:
我们一般能得到我们操作的Item在整个Item中的位置P1,那么减去显示区域中第一个Item在整个Item中的位置P2,就是我们所要的potision,后来发现有这个API,高兴坏了,ListView的getFirstVisiblePosition(),返回的就是P2,position = P1 - P2就是我们要的值,OK 搞定!继续敲.