问题
java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter convertView
at absolutely.kotlin.adapter.MyExpandAdapter.getGroupView(Unknown Source:2)
at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:446)
at android.widget.AbsListView.obtainView(AbsListView.java:2408)
at android.widget.ListView.makeAndAddView(ListView.java:2126)
at android.widget.ListView.fillDown(ListView.java:851)
at android.widget.ListView.fillDown(ListView.java:833)
at android.widget.ListView.fillFromTop(ListView.java:921)
at android.widget.ListView.layoutChildren(ListView.java:1872)
at android.widget.AbsListView.onLayout(AbsListView.java:2207)
at absolutely.kotlin.clean.base.view.ExpandListView.onLayout(ExpandListView.kt:87)
...
原因
Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull意为必不为空的参数为空了,一般发生将java代码转为Kotlin代码时,因为java中的参数可以传null,而装换过来的Kotlin代码使用是的非空类型,当该方法传入null值时,就会产生该错误,在这里是很明显是getGroupView的参数出了问题。
解决
我的MyExpandAdapter是继承自BaseExpandableListAdapter的适配器,转换后的Kotlin代码中的getGroupView有四个参数,如下:
fun getGroupView(groupPosition: Int, isExpanded: Boolean ,
convertView: View, parent: ViewGroup ):View {
.....
return convertView;
}
其中参数convertView,parent都可能为null,所以需要将其变为可空类型,即在其类型后加上?,如下:
fun getGroupView(groupPosition: Int, isExpanded: Boolean ,
convertView: View?, parent: ViewGroup? ):View {
.....
return convertView;
}
同理,该类中的getChildView方法需要相同处理
网友评论