2017-09-28 20 views
0

내가 구현 한 RecyclerView.ViewHolder 서브 클래스 아래와 같이 추가 속성을 액세스 할 수 없습니다 RecyclerView.Adapter의 :코 틀린 - - RecyclerView.ViewHolder 서브 클래스

override fun onBindViewHolder(holder: PersonViewHolder?, position: Int) { 
     val person = persons[position] 

     if (holder != null) { 
      holder.binding.setVariable(BR.person, person) // line with error 
      holder.binding.executePendingBindings() // line with error 
     } 
    } 

그러나 컴파일러가 불평 - 여기

Unresolved reference: binding은 완벽하게 구현은 다음과 같습니다

class PersonsAdapter(private var persons: Array<Person>) : RecyclerView.Adapter<PersonsAdapter.PersonViewHolder>() { 
    override fun onBindViewHolder(holder: PersonViewHolder?, position: Int) { 
     val person = persons[position] 

     if (holder != null) { 
      holder.binding.setVariable(BR.person, person) 
      holder.binding.executePendingBindings() 
     } 
    } 

    override fun getItemCount(): Int { 
     return persons.size 
    } 

    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): PersonViewHolder { 
     val itemView = LayoutInflater.from(parent!!.context).inflate(R.layout.list_item_person, parent, false) 
     return PersonViewHolder(itemView, DataBindingUtil.bind(itemView)) 
    } 

    class PersonViewHolder(itemView: View, binding: ViewDataBinding) : RecyclerView.ViewHolder(itemView) { } 
} 

여기에 무엇이든 놓치면 어떤 아이디어가 있습니까? 제발 제안 해주세요.

+1

관련 항목 : https://stackoverflow.com/questions/45821929/in-which-situation-val-var-is-necessary-in-kotlin-constructor-parameter – BakaWaii

+0

안녕하세요, BakaWaii가 참고 링크를 제공해 주셔서 감사합니다. – Devarshi

답변

3

binding: ViewDataBinding - 생성자 매개 변수 만 정의하면 클래스의 멤버로 저장되지 않습니다. var 또는 val으로 표시하여 매개 변수를 저장하고 나중에 액세스 할 수있게하십시오.

+1

이것은 정답입니다. 이 섹션의 끝 부분에있는 사용 사례를 다루는 생성자 [here] (https://kotlinlang.org/docs/reference/classes.html#constructors) 사용 방법에 대한 자세한 내용을 볼 수 있습니다. – zsmb13