작성
·
204
0
//ViewHolder 클래스
inner class ViewHolderClass(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener {
//val rowImageView = itemView.findViewById<ImageView>(R.id.rowImageView)
//val rowTextView = itemView.findViewById<TextView>(R.id.rowTextView)
var rowView = itemView as RowBinding
val rowImageView = rowView.rowImageView
val rowTextView = rowView.rowTextView
override fun onClick(v: View?) {
binding.textView.text = data1[adapterPosition]
}
}
//항목 구성을 위해 사용할 ViewHolder 객체가 필요할 때 호출되는 메소드
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolderClass {
//val itemView = layoutInflater.inflate(R.layout.row, null)
val itemView = RowBinding.inflate(layoutInflater)
val view = itemView.root
val holder = ViewHolderClass(view)
view.setOnClickListener(holder)
return holder
}
viewBinding으로 Adapter를 변경했는데 앱이 강제 종료 됩니다. 에러 메시지 java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to com.example.recyclerview.databinding.RowBinding 소스 : https://github.com/pulmuone/RecyclerView
답변 3
0
시간이 많이 지나서 이게 도움이 되실지 모르겠습니다.
위에 코드와 많이 다른 부분은 없는 것 같고, viewBinding을 활용해 만들긴 했는데..
이게 맞는지는 모르겠으나 돌아가긴 합니다.
inner class RecyclerAdapter : RecyclerView.Adapter<RecyclerAdapter.ViewHolderClass>() {
private lateinit var rowBinding : RowBinding
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolderClass {
rowBinding = RowBinding.inflate(layoutInflater)
val holder = ViewHolderClass(rowBinding)
rowBinding.root.setOnClickListener(holder)
return holder
}
// ... 2개 함수는 중략...
// ViewHolder 클래스
inner class ViewHolderClass(itemView: RowBinding) : RecyclerView.ViewHolder(rowBinding.root), View.OnClickListener {
val rowImageView = itemView.rowImageView
val rowTextView = itemView.rowTextView
override fun onClick(v: View?) {
binding.textView.text = data1[adapterPosition]
}
}
}
위 코드 참고 부탁드립니다.
0
0