Android 指定为非null的参数在ArrayAdaper中为null

Android 指定为非null的参数在ArrayAdaper中为null,android,kotlin,Android,Kotlin,我已经为spinner扩展了ArrayAdapter: class OrderAdapter(context: Context, resource: Int, objects: List<Order>) : ArrayAdapter<Order>(context, resource, objects) { override fun getView(position: Int, convertView: View?, parent: ViewGroup):

我已经为spinner扩展了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
        }
    }

有没有办法解决这个问题?

请检查下面的示例:

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
}

返回值应为空。

此问题是由增量编译引起的。只是需要在从Java转换后重建项目

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
    }

//更改视图对象(itemView)的名称不同于getView第二个对象(View)。因此,将视图更改为itemView或其他名称

在我的例子中,我只需将“?”添加到convertView参数中

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

例外情况很明显。您正在为convertView参数传递null。此方法由Android框架调用,并且该参数实际上定义为可为null,因此应允许为null。@Dawid您确定您的代码与您在此处发布的代码相同吗?具体来说,
convertView
参数是否真的声明为可空?super
getView()
是否具有相同的签名?这是增量编译的问题。我重建了这个项目,它能正常工作。这是由增量编译引起的。@DawidHyży:请将此(您的评论)作为答案发布并接受它。这里发生了同样的问题,我的问题是Java到Kotlin的自动转换器,它不能推断安全调用操作符(?)。“不只是将java代码粘贴到Kotlin类/文件中”是一个完美的解决方案
override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View {