| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 원스휴먼 동물
- 유광버섯 통조림
- 원스휴먼 스타크롬
- 당뇨 소모성 재료 한시적 특례
- 원스휴먼 쿠폰
- 테슬라 오늘시황
- 당뇨 소모성 재료 처방전 없이
- 원스휴먼 먹이
- 2차 비상계엄
- 레시피 파밍
- 실버 해안 리조트
- 원스휴먼 황금양 구하기
- 원스휴먼 황금양털파밍
- 테슬라 시황
- 원스휴먼 황금양
- 실버 해안 리조트 비밀상자
- 소모성 재료
- 테슬라 방산진출
- 당뇨 소모성 재료 지원
- 거주지 탐색
- 원스휴먼 레시피 파밍
- 원스휴먼 요리
- 소모성 재료 환급
- 실버 해안 리조트 거주지 탐색
- 원스휴먼 레시피
- 소모성 재료 건강보험공단
- 당뇨 소모성 재료
- 당뇨 소모성 재료 환급
- 소모성 재료 등록
- 원스휴먼 사료
- Today
- Total
0101011001010111
1-2.AdapterView_GridView_버튼클릭시 이벤트! 본문
binding.mygridview.setOnItemClickListener { parent, view, position, id ->
Toast.makeText(
this@MainActivity, "" + (position + 1) + "번째 선택",
Toast.LENGTH_SHORT
).show()
}
를
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
//어댑터 연결해주기
binding.mygridview.adapter = ImageAdapter()
binding.mygridview.setOnItemClickListener { parent, view, position, id ->
Toast.makeText(
this@MainActivity, "" + (position + 1) + "번째 선택",
Toast.LENGTH_SHORT
).show()
}
}
}
에 이렇게 넣어주면 클릭시 짧은 토스트 메세지가 나올수 있다.
그럼 이게 무슨 뜻인지 알아보자.
( 제일 궁금한거 : 셋온아이템클릭리스터 하고 중괄호에 parent, view, position, id 는 왜 들어가는가
binding.mygridview.adapter = ImageAdapter()
binding.mygridview.setOnItemClickListener { parent, view, position, id ->
Toast.makeText(
this@MainActivity, "" + (position + 1) + "번째 선택",
Toast.LENGTH_SHORT
).show()
}
binding.mygridview.setOnItemClickListener { ... }:
binding.mygridview를 통해 activity_main.xml에서 정의된 GridView에 접근합니다.
setOnItemClickListener는 사용자가 GridView의 아이템 중 하나를 클릭했을 때 호출되는 콜백 함수를 설정합니다.
{ parent, view, position, id -> ... }:
이것은 Kotlin의 람다 표현식입니다. setOnItemClickListener는 사용자가 아이템을 클릭할 때마다 이 람다를 호출합니다.
여기서 네 가지 파라미터가 전달됩니다:
parent: 클릭한 아이템을 포함하고 있는 부모 뷰, 즉 GridView입니다.
view: 사용자가 클릭한 아이템의 뷰입니다.
position: 사용자가 클릭한 아이템의 위치 (0부터 시작).
id: 아이템의 ID. 여기서는 getItemId 메서드에서 반환된 값입니다.
Toast.makeText(...).show():
Toast는 잠깐 동안 화면에 메시지를 표시하는 작은 팝업입니다.
makeText 메서드를 사용하여 Toast를 생성하고, show 메서드를 사용하여 화면에 표시합니다.
"" + (position + 1) + "번째 선택":
position은 0부터 시작하므로, 사용자에게 친숙한 1부터 시작하는 번호를 표시하기 위해 position + 1을 합니다.
결과적으로, 첫 번째 아이템을 클릭하면 "1번째 선택", 두 번째 아이템을 클릭하면 "2번째 선택"과 같은 메시지가 표시됩니다.
코드의 의미는 사용자가 GridView의 아이템을 클릭할 때 해당 아이템의 위치에 따라 Toast 메시지를 화면에 표시하는 것입니다.
추가설명!!!!!!!!!!!!!
setOnItemClickListener에서 전달되는 파라미터들인 parent, view, position, id에 대한 자세한 설명을 드리겠습니다.
parent:
타입: AdapterView<*>
설명: parent는 아이템 클릭이 발생한 AdapterView입니다. 여기서 AdapterView는 데이터 집합을 기반으로 아이템을 표시하는 뷰의 일반적인 클래스입니다. 예를 들면, ListView, GridView 등이 이에 해당합니다. 이 경우 parent는 GridView가 됩니다.
사용 사례: parent를 사용하면 GridView 자체나 그에 연결된 어댑터와 같은 AdapterView의 다른 속성에 접근할 수 있습니다.
view:
타입: View
설명: 사용자가 클릭한 아이템 자체의 뷰입니다. 여기서는 ImageView가 됩니다.
사용 사례: 클릭한 아이템의 뷰의 특정 속성을 변경하거나, 해당 뷰와 관련된 작업을 수행하고 싶을 때 사용할 수 있습니다.
position:
타입: Int
설명: 클릭된 아이템의 위치입니다. 첫 번째 아이템의 위치는 0, 두 번째 아이템은 1, 그리고 순서대로 증가합니다.
사용 사례: 특정 위치에 있는 데이터 항목을 가져오거나, 어댑터 내의 해당 위치와 관련된 작업을 수행하고 싶을 때 사용합니다.
id:
타입: Long
설명: 클릭된 아이템의 ID입니다. 대부분의 경우, id는 아이템의 position과 동일하게 설정됩니다. 그러나 데이터 집합 내에서 각 아이템에 고유한 식별자를 할당하려는 경우에는 이를 다르게 설정할 수도 있습니다.
사용 사례: 데이터베이스와 연동하는 경우, 각 아이템의 고유한 ID 값을 사용하여 특정 데이터 항목을 찾거나 관련 작업을 수행할 수 있습니다.
이 네 가지 파라미터는 setOnItemClickListener의 콜백 함수 내에서 사용할 수 있으며, 클릭된 아이템과 그에 관련된 정보를 제공합니다.
그럼 ` parent, view, position, id ->` 이걸 쓰는 이유는 뭐야 ?
parent, view, position, id -> 이 부분은 Kotlin의 람다 표현식에서 사용되는 문법입니다. 이것을 사용하여 setOnItemClickListener의 콜백 함수에 전달되는 인자들을 나타냅니다.
여기서의 이유와 사용 방식은 다음과 같습니다:
- 명시성: 이 문법을 사용하면 콜백에서 어떤 파라미터들이 전달되는지 명확하게 알 수 있습니다. 이를 통해 코드를 읽는 사람은 이 콜백이 어떤 정보에 접근할 수 있는지 쉽게 파악할 수 있습니다.
- 접근 용이성: 람다 표현식 내에서 이 파라미터들을 직접 사용할 수 있게 됩니다. 예를 들어, 사용자가 특정 항목을 클릭했을 때 그 항목의 position을 알고 싶다면, 단순히 position이라는 이름으로 해당 값을 참조할 수 있습니다.
- 간결성: 전통적인 콜백 리스너를 사용하는 방식보다 람다를 사용하면 코드가 더 간결해집니다. 별도의 내부 클래스나 오버라이드 메서드 없이 짧고 깔끔한 방식으로 이벤트 핸들러를 구현할 수 있습니다.
따라서, parent, view, position, id ->를 사용하는 것은 setOnItemClickListener에서 전달되는 파라미터들을 명시적으로 표시하고, 이 파라미터들을 람다 표현식 내에서 직접 접근하고 활용하기 위한 것입니다.
'Kotlin > 안드로이드_[숙련]앱개발' 카테고리의 다른 글
| 1-3 RecyclerView (1) | 2023.08.27 |
|---|---|
| 1-3. CustomView (0) | 2023.08.25 |
| 1-2.AdapterView_GridView_imageVersion (1) | 2023.08.25 |
| 1-2.AdapterView_GridView_textVersion (0) | 2023.08.24 |
| 1-2.AdapterView_ListView (0) | 2023.08.24 |