본문 바로가기

LANGUAGES, METHODLOGY/Kotlin

[안드로이드/Kotlin] RecyclerView의 아이템에 listener 달기

1. onClickListener를 포함한 Listen function을 정의



fun <T : RecyclerView.ViewHolder> T.listen(event: (position: Int, type: Int) -> Unit): T { itemView.setOnClickListener { event.invoke(getAdapterPosition(), getItemViewType()) } return this }



2. RecyclerView의 Adapter 클래스에 listen시의 동작을 정의



class MyAdapter : RecyclerView.Adapter<MyAdapter.MyViewHolder>() { val items: MutableList<String> = arrayListOf() override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): MyViewHolder? { val inflater = LayoutInflater.from(parent!!.getContext()) val view = inflater.inflate(R.layout.item_view, parent, false) return MyViewHolder(view).listen { pos, type -> val item = items.get(pos)

// 여기에 터치시에 수행할 일들을 정의한다!

} } override fun onBindViewHolder(holder: MyViewHolder?, position: Int) { } override fun getItemCount(): Int { return items.size() } class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) { } }



< 출처 >


https://stackoverflow.com/questions/29424944/recyclerview-itemclicklistener-in-kotlin