在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符号(!)的区别

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

One Solution collect form web for “在kotlin中平台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中的分号不是必需的,请注意

  • 如何在Kotlin中使用Retrofit和Observable创建异步调用?
  • 科特林向我解释了“背景场”
  • 如何在Kotlin Android中为数据类创建空构造函数
  • 从字符串拆分空间不工作在Kotlin
  • 如何使用kotlin从模型类中检索数据?
  • 在Kotlin Realm Extention中如何解决“function不属于这个领域的模式的一部分”
  • 如何删除SQLite中的行与多个使用Anko的参数?
  • SonarQube可以分析Android Kotlin代码覆盖率吗?
  • Kotlin文件不能使用R.java
  • 如何用kotlin标记List
  • 什么是KTX(Kotlin扩展库),为什么它在Android开发中越来越受欢迎
  • Kotlin language will be the best programming language for Android.