SwipeLayout作为ListView的Item根布局的空指针异常

早上一上班发现Bugly上报错了。


image

报错信息显示是SwipeLayout类报的空指针异常。

SwipeLayout类是Android Swipe Layout项目的一个控件,实现了侧滑删除等效果,是一个非常实用的自定义控件。这么成熟的开源项目,不至于在我这里报个这么严重的异常啊,当时我就郁闷了。

查看报错信息SwipeLayout类的811行:


image
image
parent.requestDisallowInterceptTouchEvent(true);

这行代码只是让parent注册响应触摸事件。所以只有parent为空这一种可能,而parent则是SwipeLayout的父布局ViewParent。

在我们的项目中,SwipeLayout控件一般使用在ListView的Item中,对Item数据进行删除等操作。在Adapter的getView方法中,我们实例化convertView时,一般都会把convertView的ViewGroup设置为null。

convertView = View.inflate(context, R.layout.list_item, null);

而我们偏偏在list_item里将SwipeLayout控件设置成了根布局,所以当将SwipeLayout内部使用getParent()时得到的也是空指针。


image
image

Bug的解决办法就是将SwipeLayout控件的外面再套一层布局,不要作为item的根布局。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容