recycler example custom arrayadapter android android-arrayadapter kotlin

example - ArrayAdapter utilizar Kotlin android



listview kotlin example (1)

Lo siento por mi ingles. Estoy aprendiendo kotlin y ahora necesito escribir ArrayAdapter, pero tengo un error al intentar hacer esto convertView = vi.inflate(resource, null) kotlin, dígame que Val cannot be reassigned . En el sitio kotline, convierto la clase java a la clase kotlin y trato de hacer me gusta en este sitio. ¿Por qué tengo erro, cómo puedo solucionar esto?

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 } }


La variable de parámetro no se puede volver a asignar, tendrá que crear una variable local para mantener su vista devuelta:

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 }