2017-01-29 15 views
12

私の英語を残念に思います。私はkotlinを学んで、ArrayAdapterを書く必要がありますが、これを試してみるといくつかのエラーが発生しますconvertView = vi.inflate(resource, null) kotlin said me Val cannot be reassignedサイトkotlineで私はkotlinクラスにJavaクラスを変換し、このサイトのようにしてみてください。なぜ私はerroを持っています、どうすればこの問題を解決できますか?ArrayAdapter使用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 
    } 

} 

答えて

14

パラメータ変数を再割り当てすることはできません、あなたは返されるビューを保持するローカル変数を作成する必要があります。

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'''エラーを修正 –

関連する問題