实现Android自定义ListView过程中出现的一些问题,要注意了,不能再犯!

本文分享了在自定义ListView实现滑动编辑、删除及双击选中功能时遇到的问题及解决方案,包括如何正确地使用getChildAt方法获取列表项,以及如何在ListView的OnTouchEvent回调中准确地记录滑动项的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在编写自定义ListView实现滑动编辑、删除,双击选中功能的过程中遇到一些2B问题,今后一定不能再犯,特记录如下:

1.在对ListView中item进行更新操作时需要使用getChildAt(index)取子item,index为子item在当前可见项中的索引,而不是所有项中的索引!被这个坑惨了呀,一定要注意。

即取值范围在 ListView.getFirstVisiblePosition() 和ListView.getLastVisiblePosition()之间; 
1)所以如果想获取前部的将会出现返回Null值空指针问题; 
2)getChildCount跟getCount获取的值将会不一样(数量多时); 
3 )如果使用了getChildAt(index).findViewById(...)设置值的话,滚动列表时值就会改变了。 
需要使用getFirstVisiblePosition()获得第一个可见的位置,再用当前的position减它获得Index,再用getChildAt取值!即getChildAt(position - ListView.getFirstVisiblePosition())获得相应的ItemView

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2.实现AdapterView.OnItemClickListener接口中的onItemClick()回调只在单击并弹起item后调用,不能在该回调中记录滑动item的位置,记录滑动item的位置可以在自定义ListView所重写的OnTouchEvent()回调中捕获MotionEvent.ACTION_DOWN事件后,根据用户单击单击客户区坐标点判断item的位置。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值