在kotlin中平台types的智能广播

我正在使用kotlin创建我的适配器,它在android中扩展了BaseAdapter 。 下面是getView方法内部的代码

 override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View? { var binding : ImageBinding var conView = convertView if(conView == null){ binding = DataBindingUtil.inflate(LayoutInflater.from(parent?.context), R.layout.image, parent, false) conView = binding.root; conView.tag = binding }else { binding = conView.getTag() as ImageBinding } return conView; } 

conView.tag = bindingbinding = conView.getTag()突出显示粉红色的颜色。当我hover在conView.tag = binding与我的鼠标popup式消息智能转换到android.view.View! 。 当我把鼠标hover在binding = conView.tag ,会popup一个消息智能转换为android.view.View 。 注意两个消息中后者缺少平台types符号(!)的区别

我怎样才能实现这两个建议的选项?

因为convertView是一个可为空的typesvariables( View? ),所以var conView = convertView创建一个可为空的conViewvariables的副本。 所以你应该把conViewvariables当作空值来处理。

尝试以下方法:

 override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View? { var binding : ImageBinding convertView?.let { binding = it.tag as ImageBinding return it } binding = DataBindingUtil.inflate(LayoutInflater.from(parent?.context), R.layout.image, parent, false) val conView = binding.root conView.tag = binding return conView } 

注意 :Kotlin中的分号不是必需的,请注意