簡體   English   中英

ArrayAdaper 中指定為非空的參數為空

[英]Parameter specified as non-null is null in ArrayAdaper

我已經為微調器擴展了 ArrayAdapter:

class OrderAdapter(context: Context, resource: Int, objects: List<Order>) : ArrayAdapter<Order>(context, resource, objects) {
        override fun getView(position: Int, convertView: View?, parent: ViewGroup): View? {
            val view = super.getView(position, convertView, parent)
            view?.let { view.find<TextView>(android.R.id.text1).text = getItem(position).name }
            return view
        }
        override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View? {
            val view = super.getDropDownView(position, convertView, parent)
            view?.let {view.find<TextView>(android.R.id.text1).text = getItem(position).name }
            return view
        }
    }

我得到了例外:

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter convertView
                                                                                          at com.github.blabla.endlesss.ui.adapter.OrderAdapter.getView(OrderAdapter.kt:0)

任何想法如何解決它?

此問題是由增量編譯引起的。 從Java轉換后只需要重建項目。

請檢查以下示例:

override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View? {
    return getCustomView(position, convertView, parent)
}

override fun getView(position: Int, convertView: View?, parent: ViewGroup): View? {
    return getCustomView(position, convertView, parent)
}

fun getCustomView(position: Int, convertView: View?, parent: ViewGroup): View? {
    val rootView: View? = LayoutInflater.from(context).inflate(R.layout.my_custom_view, parent, false)
    return rootView
}

返回的值應該可以為空。

就我而言,我只需要添加“?” 到 convertView 參數

override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View {
override fun getView(i: Int, view: View, parent: ViewGroup): View {

var itemView = LayoutInflater.from(context).inflate(R.layout.item_dashbord_data, parent, false)

        return itemView
    }

// 更改 View 對象(itemView)的名稱與 getView 第二個對象(view)不同。 所以將視圖更改為 itemView 或其他名稱

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM