Android 指定为非null的参数在ArrayAdaper中为null
我已经为spinner扩展了ArrayAdapter: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):
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
参数是否真的声明为可空?supergetView()
是否具有相同的签名?这是增量编译的问题。我重建了这个项目,它能正常工作。这是由增量编译引起的。@DawidHyży:请将此(您的评论)作为答案发布并接受它。这里发生了同样的问题,我的问题是Java到Kotlin的自动转换器,它不能推断安全调用操作符(?)。“不只是将java代码粘贴到Kotlin类/文件中”是一个完美的解决方案
override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View {