Onmeasure报空指针

ListView 和ScroolView同时使用计算高度时onmeasure报空指针的解决办法

虽然android 的设计者始终认为ListView、GridView+ScroolView组合使用并不是一种比较好的实现方法。但是在我们开发过程中又会经常使用到这样的需求,特别是在适配小屏幕手机的时候又必须要用这种让人不接受的设计,下面就来说一下在计算ListView或者GridView的过程中会出现onmeasure空指针的问题。


解决办法

当我发现listItem.measure(0,0)报空指针异常的时候,第一反应是listItem报空指针,然而debug调试过后发现其不为null,这个时候就比较费解了。
通过查看官方API和一些资料查找后发现了幕后的原因,其主要原因跟Linearlayout的机制有关,原因是因为只有Linearlayout重写了onmeasure这个方法,而android的其他的4种布局均没有重写onmeasure方法,想到这里,这个问题就不解自破了。既然要用到measure计算高度,那么我们就只能用Linearlayout布局了,所有解决这个问题的办法就是把你对应的适配器(adapter)里的其他布局改成Linearlayout就OK了。
自从跟进了这个问题之后,我最近也在寻找新的方式取代这种ListView 和ScroolView同时使用的情况,研究出来后会第一时间分享给大家。希望这篇博客能帮助大家解决这个问题。

总结

把adapter中的布局改成Linearlayout即可。原因如上。

PS:最新开始准备着手写博客,写的不好的地方望大家见谅。

个人博客
http://jackwaiting.com
https://github.com/Jackwaiting
http://www.zhihu.com/people/jackwaiting

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JackWaiting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值