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
'LANGUAGES, METHODLOGY > Kotlin' 카테고리의 다른 글
[GDG Seoul | 코틀린 ] Kotlin / Everywhere Seoul 2019에 가다 [1부] (0) | 2019.08.27 |
---|---|
[안드로이드/Kotlin] ViewPager로 온보딩 페이지 간단히 구현하기 (0) | 2019.07.22 |
[안드로이드/Kotlin] Activity에서 Fragment의 요소를 제어하자 (0) | 2019.04.05 |
[안드로이드] Fragment로 전달된 Touch 이벤트를 액티비티에서 처리하기 (0) | 2019.03.14 |
[Kotlin] 자바로 쓰인 안드로이드 프로젝트를 단순히 Kotlin으로 컨버팅해보자 (0) | 2019.02.12 |