✔ 순서
Adapter -> ViewHolder class
- OnCreateContextMenuListener implement
- onCreateContextMenu override
- menu 생성 혹은 menu layout inflate (이 예제에서는 메뉴 생성)
Adapter를 등록해주는 Fragment
- onContextItemSelected override
✔ Adapter class 내부에 viewHolder class를 만들어 사용할 때 예시
class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), OnCreateContextMenuListener {
var cardLayout: ConstraintLayout = itemView.findViewById((R.id.card_layout))
var itemAlarmTime: TextView = itemView.findViewById(R.id.alarm_time)
var itemAlarmPlaylist: TextView = itemView.findViewById(R.id.playlist_name)
var itemSwitchToggle: SwitchCompat = itemView.findViewById(R.id.alarm_switch)
init {
cardLayout.setOnCreateContextMenuListener(this)
}
override fun onCreateContextMenu(
menu: ContextMenu?,
v: View?,
menuInfo: ContextMenu.ContextMenuInfo?
) {
menu?.add(bindingAdapterPosition, 121, 0, "삭제")
}
}
- OnCreateContextMenuListener implement
- context menu를 사용하고 싶은 item에 setOnCreateContextMenuListener() 적용
- onCreateContextMenu() 를 override 하여 menu 생성
- 위 예제는 menu를 간단하게 생성하는 방법을 보여주고 있고, menu layout으로 구현하는 방법도 있음
✔ Fragment 에서 onContextItemSelected override
override fun onContextItemSelected(item: MenuItem): Boolean {
when(item.itemId) {
}
return true
}