gpt4 book ai didi

android - ArrayAdapter 使用 Kotlin android

转载 作者:IT老高 更新时间:2023-10-28 13:28:47 26 4
gpt4 key购买 nike

所以我正在学习 kotlin,现在我需要编写一个 ArrayAdapter,但是在尝试这样做时出现了一些错误:

convertView = vi.inflate(resource, null) 

kotlin 告诉我

Val cannot be reassigned

在站点 kotline 中,我将 java 类转换为 kotlin 类并尝试在此站点中做类似的事情。为什么会出现错误,我该如何解决?这是整个代码。

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
}

}

最佳答案

参数变量不能重新赋值,你需要创建一个局部变量来保存你返回的 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
}

关于android - ArrayAdapter 使用 Kotlin android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41923557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com