kotlin的报错提示:
java.lang.NullPointerException: null cannot be cast to non-null type android.util.SparseArray<android.view.View?>
报错信息可能是:null不能转换到非null类型SparseArray<android.view.View?>
先看看ViewHolder.kt
object ViewHolder {
operator fun <T : View?> get(view: View, id: Int): T? {
//j节省内存,提高性能,使用SparseArray
var viewHolder = view.tag as SparseArray<View?>
if (viewHolder == null) {
viewHolder = SparseArray()
view.tag = viewHolder
}
var childView = viewHolder[id]
if (childView == null) {
childView = view.findViewById(id)
viewHolder.put(id, childView)
}
return childView as T?
}
}
这代码中:
var viewHolder = view.tag as SparseArray<View?>
改为:
var viewHolder = view.tag as? SparseArray<View?>