2017-01-29 7 views
12

Entschuldigung für mein Englisch. Ich lerne Kotlin und jetzt brauche ich schreiben ArrayAdapter, aber ich habe einen Fehler, wenn Sie dies tun convertView = vi.inflate(resource, null) Kotlin sagen mir Val cannot be reassigned. In der Website kotline konvertiere ich Java-Klasse in kotlin-Klasse und versuche es auf dieser Seite. Warum habe ich Fehler, wie kann ich das beheben?ArrayAdapter verwenden Kotlin android

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 
    } 

} 

Antwort

14

Parameter Variable kann nicht neu zugeordnet werden, müssen Sie eine lokale Variable erstellen Ihre Rückansicht zu halten:

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) //error in this line 

    } else { 
     holder = convertView.tag as ViewHolder 
     retView = convertView 
    } 

    return retView 
} 
+0

'' 'retView.tag = holder''' den Fehler beheben –