i定义了变量,该变量为null,但后来基于View.Tag对象类型I必须设置它。但是它说Required Nothing found RequestCenterDetails
。以下是我尝试这样做的方式
holder?.addressIcon?.setOnClickListener {
val tagObject = holder.institutecardView.getTag(R.id.item_institute_cardview)
var center=null
if(tagObject is RequestCenterDetails)
{
Log.d("location","-------------TEST----------- its a RequestCenter")
center=tagObject as RequestCenterDetails // over here it say "Required Nothing found RequestCenterDetails"
}
else if(tagObject is Center)
{
Log.d("location","-------------TEST----------- its a Center")
}
问题是,我必须基于那里的字段值采取相同的操作,但是两个对象都有不同的字段名称。有什么更好的方法吗?我是Kotlin的新手。
如果您知道 center
是 RequestCenterDetails
,do
var center: RequestCenterDetails? = null
如果center
也可以是另一种类型,请
var center: Any? = null
您所做的事情的更简洁版本:
var center: RequestCenterdetails? = tagObject as? RequestCenterDetails
如果tagObject
为RequestRecenterDetails
,则分配tagObject
的中心值,否则将其分配null
。
原因是,您的变量center
具有Nothing?
类型。您可以通过说:
var center: Any? = null
这不建议使用这种通用类型。
您只需要指定类型,因为编译器尚不清楚,我建议您在层次结构中放置最高可能的常见类型(对于RequestCenterDetails
和Center
),或者只是Any
如果您可以接受任何类型:
var center: Any = null
或
var center: CommonBaseClass = null