ArrayAdapter использовать Котлин android
извините за мой английский. Я изучаю Котлин, и теперь мне нужно написать ArrayAdapter, но у меня есть ошибка, когда я пытаюсь сделать это convertView = vi.inflate(resource, null)
Котлин скажи мне Val cannot be reassigned
. На сайте kotline я конвертирую класс java в класс kotlin и стараюсь делать как на этом сайте. Почему у меня есть erro, как я могу это исправить?
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
}
}
1 ответов
переменная параметра не может быть повторно назначена, вам нужно будет создать локальную переменную для хранения возвращаемого представления:
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
}