[Android Studio] onItemClickListener, onItemLongClickListener

이도연·2023년 9월 3일
0

android studio

목록 보기
10/28

1. onItemClickLister 와 onItemClickListener의 차이

RecyclerView나 ListView와 같은 리스트 뷰 위젯의 아이템 클릭 이벤트를 처리한다.

.
.
.

1-1. 이벤트 유형

onItemClickListener:
아이템을 일반적으로 클릭할 때 발생하는 단순한 클릭 이벤트를 처리한다. 즉, 아이템을 한 번 클릭했을 때 동작.

onItemLongClickListener:
아이템을 길게(롱 클릭) 클릭했을 때 발생하는 이벤트를 처리. 아이템을 길게 클릭했을 때 발생하는 이벤트로, 일반적으로 길게 클릭하면 컨텍스트 메뉴나 팝업 메뉴 등을 표시하는 데 사용된다.

.
.
.

1-2. 호출 시점

onItemClickListener:
아이템을 클릭한 순간에 즉시 호출

onItemLongClickListener:
아이템을 길게 클릭한 순간에 호출됩니다.

.
.
.

1-3. 사용 사례

onItemClickListener:
주로 아이템 선택하고 그에 대한 상세 정보를 보여주는 데 사용된다.
예를 들어, 아이템을 클릭하면 해당 아이템의 세부 정보 화면으로 이동한다.

onItemLongClickListener:
길게 클릭한 아이템에 대한 추가 작업을 수행할 때 사용된다.
예를 들어, 아이템을 길게 클릭하면 삭제 또는 수정 옵션을 제공하는 컨텍스트 메뉴를 표시한다.

.
.
.
.
.

2. 예제

onItemClickListener 는 CallBack Listener 이다.
CallBack 이란 유저가 RecyclerView나 ListView 의 한 Row (행) 클릭 시, 시스템에서 유저가 클릭한 것에 대한 반응을 유저에게 알려주는 것.

따라서, onItemClickListener 는, 그 Row 에 해당하는 position, view, adapterview 등을 시스템에서 유저에게 전달해주는 메서드.

다음은 Recycler View 의 아이템을 클릭할 때, 실행되는 동작을 정의하는 코드이다.

// adapter.itemClick에 클릭 리스너를 할당
adapter.itemClick = object : ItemAdapter.ItemClick {
    override fun onClick(view: View, position: Int) {
        // 클릭 이벤트 처리

        // 새로운 화면으로 이동하기 위한 Intent를 생성
        val intent = Intent(this@MainActivity, DetailActivity::class.java)

        // 선택한 아이템의 위치(position)을 인텐트에 추가
        intent.putExtra(Constants.ITEM_INDEX, position)

        // 선택한 아이템의 데이터를 인텐트에 추가
        intent.putExtra(Constants.ITEM_OBJECT, dataList[position])

        // 생성한 인텐트 실행
        activityResultLauncher.launch(intent)
    }
}

클릭 이벤트 발생 시, 선택한 아이템의 position 과 데이터를 담아 새로운 화면(DetailActivity)로 이동한다. 이동을 위한 Intent 를 생성하고, putExtra 메서드를 사용하여 데이터를 추가한다.
생성한 Intent를 실행하여 다른 화면으로 전환한다.

0개의 댓글