관리 메뉴

0101011001010111

1-2.AdapterView_GridView_버튼클릭시 이벤트! 본문

Kotlin/안드로이드_[숙련]앱개발

1-2.AdapterView_GridView_버튼클릭시 이벤트!

[진주] 2023. 8. 25. 16:55
728x90
반응형

 

 

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의 콜백 함수에 전달되는 인자들을 나타냅니다.

여기서의 이유와 사용 방식은 다음과 같습니다:

  1. 명시성: 이 문법을 사용하면 콜백에서 어떤 파라미터들이 전달되는지 명확하게 알 수 있습니다. 이를 통해 코드를 읽는 사람은 이 콜백이 어떤 정보에 접근할 수 있는지 쉽게 파악할 수 있습니다.
  2. 접근 용이성: 람다 표현식 내에서 이 파라미터들을 직접 사용할 수 있게 됩니다. 예를 들어, 사용자가 특정 항목을 클릭했을 때 그 항목의 position을 알고 싶다면, 단순히 position이라는 이름으로 해당 값을 참조할 수 있습니다.
  3. 간결성: 전통적인 콜백 리스너를 사용하는 방식보다 람다를 사용하면 코드가 더 간결해집니다. 별도의 내부 클래스나 오버라이드 메서드 없이 짧고 깔끔한 방식으로 이벤트 핸들러를 구현할 수 있습니다.

따라서, parent, view, position, id ->를 사용하는 것은 setOnItemClickListener에서 전달되는 파라미터들을 명시적으로 표시하고, 이 파라미터들을 람다 표현식 내에서 직접 접근하고 활용하기 위한 것입니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

'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