[英]ArrayAdapter use Kotlin android
SoI'm learning kotlin and now I need to write an ArrayAdapter, but I've some error when trying to do this: 所以我正在学习kotlin,现在我需要编写一个ArrayAdapter,但是在尝试这样做时我遇到了一些错误:
convertView = vi.inflate(resource, null)
kotlin is telling me 科特林告诉我
Val cannot be reassigned Val无法重新分配
In the site kotline I convert java class to kotlin class and try to do like in this site. 在网站kotline我将java类转换为kotlin类并尝试在此站点中执行。 Why is there an error and how can I fix this? 为什么会出现错误,我该如何解决? Here is the whole code. 这是整个代码。
open class MyAdapter(context: Context, resource: Int, list: ArrayList<MyItems>) :
ArrayAdapter<MyItems>(context, resource, list) {
var resource: Int
var list: ArrayList<MyItems>
var vi: LayoutInflater
init {
this.resource = resource
this.list = list
this.vi = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View? {
var holder: ViewHolder
if(convertView == null){
convertView = vi.inflate(resource, null) //error in this line
holder = ViewHolder()
holder.image = convertView.findViewById(R.id.myImage) as ImageView?
convertView.tag(holder) //error in this line
} else {
holder = convertView.tag as ViewHolder
}
return convertView
}
internal class ViewHolder {
var image: ImageView? = null
}
}
Parameter variable cannot be re-assigned, you will need to create a local variable to hold your returned view: 无法重新分配参数变量,您需要创建一个局部变量来保存返回的视图:
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View? {
var holder: ViewHolder
var retView: View
if(convertView == null){
retView = vi.inflate(resource, null)
holder = ViewHolder()
holder.image = retView.findViewById(R.id.myImage) as ImageView?
retView.tag = holder
} else {
holder = convertView.tag as ViewHolder
retView = convertView
}
return retView
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.