[Android Studio] itemClick, itemLongClick

이도연·2023년 9월 3일
0

trouble shooting

목록 보기
5/12
 adapter.itemClick = object : ItemAdapter.ItemClick {
            override fun onClick(view: View, position: Int) {
                val intent = Intent(this@MainActivity, DetailActivity::class.java)
                intent.putExtra(Constants.ITEM_INDEX, position)
                intent.putExtra(Constants.ITEM_OBJECT, dataList[position])
                activityResultLauncher.launch(intent)
            }
        }

        adapter.itemLongClick = object : ItemAdapter.ItemLongClick {
            override fun onLongClick(view: View, position: Int) {
                val intent = Intent(this@MainActivity, DetailActivity::class.java)
                intent.putExtra(Constants.ITEM_INDEX, position)
                intent.putExtra("title", ITEM_OBJECT,dataList[position].);
                activityResultLauncher.launch(intent)
            }
        }

이슈

Unresolved reference : View
Unresolved reference : itemClick
Unresolved reference : itemLongClick
.
.
.

해결

ItemAdapter 클래스에 인터페이스 정의

interface ItemClick {
        fun onClick(view: View, position: Int)
    }

interface ItemLongClick {
        fun onLongClick(view: View, position: Int)
    }
var itemClick: ItemClick? = null
    var itemLongClick: ItemLongClick? = null

MainActivity 에서 adapter 객체 초기화 후 인터페이스 할당

val adapter = ItemAdapter()
binding.recyclerView.adapter = adapter

// itemClick 및 itemLongClick에 인터페이스 객체 할당
adapter.itemClick = object : ItemAdapter.ItemClick {
    override fun onClick(view: View, position: Int) {
        // 클릭 이벤트 처리
    }
}

adapter.itemLongClick = object : ItemAdapter.ItemLongClick {
    override fun onLongClick(view: View, position: Int) {
        // 롱 클릭 이벤트 처리
    }
}
import android.view.View

itemClick, itemLongClick, View 오류 해결.

.
.
.

원인

Unresolved reference: itemClick
Unresolved reference: itemLongClick

adapter 객체에 itemClick 및 itemLongClick 프로퍼티가 정의되지 않았다. (프로퍼티 타입이 일치하지 않는 경우에도 해당 오류가 뜸)
ItemAdapter 클래스에서 ItemClick 및 ItemLongClick 인터페이스가 정의되어 있는지 확인하고, 이 인터페이스를 구현한 객체를 adapter에 할당했다.

View 를 사용하기 위해 해당 클래스를 import 했다.

0개의 댓글