lPointerException: null cannot be cast to non-null type android.util.SparseArray<android.view.View?>

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?>

猜你喜欢

转载自blog.csdn.net/qq_35091074/article/details/123918151