java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.v7.widget.RecyclerView$ViewHolder.shouldIgnore()' on a null object reference
at android.support.v7.widget.RecyclerView.findMinMaxChildLayoutPositions(RecyclerView.java:3989)
写完需求,信心满满的运行,结果启动崩溃。。。看到上面的错误信息一脸懵逼,于是在网上开始搜寻,这,到底是为什么?
经过一番搜寻和尝试,终于找到了这篇帖子,http://osask.cn/front/ask/view/579034,错误是因为将一个新的RecyclerView.LayoutParams设置为项目的rootview
excuse me,查一下布局,这肯定是不可能的呀,然后看了一下adapter代码,发现了端倪,代码如下:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder {
var rootView = LayoutInflater.from(context).inflate(R.layout.record_layout_beauty_panel_item, parent)
return ItemHolder(rootView)
}
inflate函数在root不为空的情况,是默认attachToRoot的,这正是问题所在
inflate(parser, root, root != null);
于是代码改成下面的样子,搞定!
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder {
var rootView = LayoutInflater.from(context).inflate(R.layout.record_layout_beauty_panel_item, parent, false)
return ItemHolder(rootView)
}