美文网首页
SwipeLayout作为ListView的Item根布局的空指

SwipeLayout作为ListView的Item根布局的空指

作者: 管弦_ | 来源:发表于2017-07-26 11:35 被阅读0次

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


image

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

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

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


imageimage
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()时得到的也是空指针。


imageimage

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

相关文章

网友评论

      本文标题:SwipeLayout作为ListView的Item根布局的空指

      本文链接:https://www.haomeiwen.com/subject/tienkxtx.html