[2024. 01. 08] ListView, GridView

Gahyeon Leeยท2024๋…„ 1์›” 8์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
41/47
post-thumbnail

๐Ÿช ListView

ListView๋Š” ์–ด๋Œ‘ํ„ฐ ๋ทฐ์˜ ๋Œ€ํ‘œ ์œ„์ ฏ์œผ๋กœ์„œ, ๋ณต์ˆ˜ ๊ฐœ์˜ ํ•ญ๋ชฉ์„ ์ˆ˜์ง์œผ๋กœ ํ‘œ์‹œํ•œ๋‹ค.

1. ListView ์„ค์ • ๋ฐฉ๋ฒ•

  1. ๋ฉ”์ธํ™”๋ฉด ๋ ˆ์ด์•„์›ƒ์— ListView ์œ„์ ฏ ์ •์˜(XML ์ฝ”๋“œ)
  • ๋ฉ”์ธ ํ™”๋ฉด ๋ ˆ์ด์•„์›ƒ (์˜ˆ,activity_main.xml)์— ListView ์œ„์ ฏ ์ถ”๊ฐ€
  • XML ๋ ˆ์ด์•„์›ƒ ํŒŒ์ผ์— ์ •์˜๋œ ListView ์œ„์ ฏ์„ Java์ฝ”๋“œ์—์„œ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•˜์—ฌ id์†์„ฑ์„ ์ •์˜
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ListView
        android:id="@+id/ListView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
  1. ์–ด๋Œ‘ํ„ฐ ๊ฐ์ฒด ์ƒ์„ฑ(Kotlin ์ฝ”๋“œ)
  • ๋ฐ์ดํ„ฐ ์›๋ณธ์ด ๋ฐฐ์—ด์ธ ๊ฒฝ์šฐ์— ArrayAdapter๊ฐ์ฒด ์‚ฌ์šฉ

  • ArrayAdapter ์ƒ์„ฑ์ž

  • ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
    - context: ํ˜„์žฌ ์ปจํ…์ŠคํŠธ
    - resource: ํ•ญ๋ชฉ์œผ๋กœ ํ‘œ์‹œ๋  ํ…์ŠคํŠธ ๋ทฐ์˜ ๋ฆฌ์†Œ์Šค ID(์ƒˆ๋กœ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ์ œ๊ณตํ•˜๋Š” ์•„๋ž˜์˜ ID๋กœ ์‚ฌ์šฉ)

    objects: ์–ด๋Œ‘ํ„ฐ๋กœ ๊ณต๊ธ‰๋  ๋ฐ์ดํ„ฐ ์›๋ณธ์œผ๋กœ ๋‹จ์ˆœ ๋ฐฐ์—ด

  • String ๋ฐฐ์—ด์„ ์ด์šฉํ•œ ArrayAdapter ๊ฐ์ฒด ์ƒ์„ฑ ์˜ˆ์ œ

class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        // ๋ฐ์ดํ„ฐ ์›๋ณธ ์ค€๋น„
        val items = arrayOf<String?>("item1", "item2", "item3", "item4", "item5", "item6", "item7", "item8", "item5", "item6", "item7", "item8", "item5", "item6", "item7", "item8", "item5", "item6",  "item7", "item8")

        // ์–ด๋Œ‘ํ„ฐ ์ค€๋น„ (๋ฐฐ์—ด ๊ฐ์ฒด ์ด์šฉ, simple_list_item_1 ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ)
        val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, items)    // ArrayAdapter๋ฅผ ์“ธ ๊ฒƒ์ด๊ณ , ํ•œ ์ค„๋งŒ ๋‚˜์˜ค๋Š” ๋ทฐ ํ˜•์‹์„ ์“ฐ๊ณ , ๊ฑฐ๊ธฐ์— ๋ฐ์ดํ„ฐ ์›๋ณธ items๋ฅผ ๋„ฃ์–ด์คŒ.
    }
}
  1. ListView ๊ฐ์ฒด์— ์–ด๋Œ‘ํ„ฐ ์—ฐ๊ฒฐ(Kotlin ์ฝ”๋“œ)
  • ํ˜„์žฌ ํ™”๋ฉด ๋ ˆ์ด์•„์›ƒ(activity_main.xml)์— ์ •์˜ ๋œ ๋ทฐ ์ค‘์—์„œ id๊ฐ€ listView์ธ ListView ๊ฐ์ฒด๋ฅผ ViewBinding์„ ํ†ตํ•ด์„œ ์–ป์–ด์˜จ๋‹ค.
  • ์–ป์–ด์˜จ ListView๊ฐ์ฒด์— ์ƒ์„ฑ๋œ ์–ด๋Œ‘ํ„ฐ ๊ฐ์ฒด(์˜ˆ,ArrayAdapter๊ฐ์ฒด-adapter)๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค
...

// ๋ฐ์ดํ„ฐ ์›๋ณธ ์ค€๋น„
        val items = arrayOf<String?>("item1", "item2", "item3", "item4", "item5", "item6", "item7", "item8", "item5", "item6", "item7", "item8", "item5", "item6", "item7", "item8", "item5", "item6",  "item7", "item8")

        // ์–ด๋Œ‘ํ„ฐ ์ค€๋น„ (๋ฐฐ์—ด ๊ฐ์ฒด ์ด์šฉ, simple_list_item_1 ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ)
        val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, items)    // ArrayAdapter๋ฅผ ์“ธ ๊ฒƒ์ด๊ณ , ํ•œ ์ค„๋งŒ ๋‚˜์˜ค๋Š” ๋ทฐ ํ˜•์‹์„ ์“ฐ๊ณ , ๊ฑฐ๊ธฐ์— ๋ฐ์ดํ„ฐ ์›๋ณธ items๋ฅผ ๋„ฃ์–ด์คŒ.

        binding.ListView.adapter = adapter    // ์œ„ adapter ๋ณ€์ˆ˜๋ฅผ ListView ์–ด๋Œ‘ํ„ฐ์— ์—ฐ๊ฒฐํ•ด ์คŒ.
    }
}

๐Ÿช GridView

GridView๋Š” 2์ฐจ์› ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•œ ๊ทธ๋ฆฌ๋“œ์— ํ•ญ๋ชฉ์„ ํ‘œ์‹œํ•œ๋‹ค.

1. GridView ์„ค์ • ๋ฐฉ๋ฒ•

  1. ๋ฉ”์ธํ™”๋ฉด ๋ ˆ์ด์•„์›ƒ์— GridView์œ„์ ฏ ์ •์˜ (XML์ฝ”๋“œ)
  • ๋ฉ”์ธํ™”๋ฉด ๋ ˆ์ด์•„์›ƒ(์˜ˆ,activity_main.xml)์— GridView์œ„์ ฏ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
  • XML๋ ˆ์ด์•„์›ƒ ํŒŒ์ผ์— ์ •์˜๋œ GridView์œ„์ ฏ์„ Kotlin ์ฝ”๋“œ์—์„œ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•˜์—ฌ id ์†์„ฑ์„ ์ •์˜ํ•œ๋‹ค.
  • ListView์™€ ๊ฑฐ์˜ ๋™์ผํ•˜์ง€๋งŒ, ์˜ต์…˜ ๊ฐ’๋“ค์ด ์žˆ๋‹ค.
    • android:columnWidth=โ€œ100dpโ€ย : ๊ทธ๋ฆฌ๋“œ ํ•ญ๋ชฉ ํ•˜๋‚˜์˜ ํญ(๊ฐ„๊ฒฉ)์„ 100dp๋กœ ์„ค์ •
    • android:numColumns=โ€œauto_fitโ€: ์—ด์˜ ํญ๊ณผ ํ™”๋ฉด ํญ์„ ๋ฐ”ํƒ•์œผ๋กœ (๊ฝ‰ ์ฐจ๊ฒŒ)์ž๋™ ๊ณ„์‚ฐ
    • android:verticalSpacing: ํ•ญ๋ชฉ ๊ฐ„์˜ ๊ฐ„๊ฒฉ ์„ค์ •
    • android:stretchMode=โ€œcolumnWidthโ€: ์—ด ๋‚ด๋ถ€์˜ ์—ฌ๋ฐฑ์„ ํญ์— ๋งž๊ฒŒ ์ฑ„์›€
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    tools:context=".MainActivity">

    <GridView
        android:id="@+id/gridview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnWidth="100dp"
        android:numColumns="auto_fit"
        android:verticalSpacing="10dp"
        android:horizontalSpacing="10dp"
        android:stretchMode="columnWidth"
        android:gravity="center"/>
</androidx.constraintlayout.widget.ConstraintLayout>
  1. ArrayAdapter๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  GridView๊ฐ์ฒด์— ์—ฐ๊ฒฐ (Kotlin ์ฝ”๋“œ)
class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        // ๋ฐ์ดํ„ฐ ์›๋ณธ ์ค€๋น„
        val items = arrayOf<String?>("item1", "item2", "item3", "item4", "item5", "item6", "item7", "item8", "item5", "item6", "item7", "item8", "item5", "item6", "item7", "item8", "item5", "item6",  "item7", "item8")

        // ์–ด๋Œ‘ํ„ฐ ์ค€๋น„(๋ฐฐ์—ด ๊ฐ์ฒด ์ด์šฉ, simple_list_item_1 ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ)
        val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, items)

        // ์–ด๋Œ‘ํ„ฐ๋ฅผ GridView ๊ฐ์ฒด์— ์—ฐ๊ฒฐ
        binding.gridview.adapter = adapter
    }
}
  1. ์ด๋ฏธ์ง€ ๊ทธ๋ฆฌ๋“œ ๋ทฐ ๋งŒ๋“ค์–ด๋ณด๊ธฐ
  • a. ๋ฉ”์ธํ™”๋ฉด ๋ ˆ์ด์•„์›ƒ์— GridView์œ„์ ฏ ์ •์˜(XML์ฝ”๋“œ)
    • ๋ฉ”์ธํ™”๋ฉด ๋ ˆ์ด์•„์›ƒ(์˜ˆ,activity_main.xml)์— GridView์œ„์ ฏ์„ ์ถ”๊ฐ€
    • XML๋ ˆ์ด์•„์›ƒ ํŒŒ์ผ์— ์ •์˜๋œ GridView์œ„์ ฏ์„ Java์ฝ”๋“œ์—์„œ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•˜์—ฌ id์†์„ฑ์„์ •์˜ํ•œ๋‹ค.
    <GridView
          android:id="@+id/gridview"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:columnWidth="100dp"
          android:gravity="center"
          android:horizontalSpacing="10dp"
          android:numColumns="auto_fit"
          android:stretchMode="columnWidth"
          android:verticalSpacing="10dp" />
  • b. ์–ด๋Œ‘ํ„ฐ ์ •์˜(Kotlin์ฝ”๋“œ)
    • ๊ทธ๋ฆฌ๋“œ ๋ทฐ์˜ ํ•ญ๋ชฉ์œผ๋กœ ๊ฐ„๋‹จํ•œ ํ…์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ฆฌ๋“œ๋ทฐ์˜ ํ•ญ๋ชฉ์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๊ณต๊ธ‰ํ•˜๋Š” ImageAdapter๋ฅผ BaseAdapter๋กœ๋ถ€ํ„ฐ ํŒŒ์ƒํ•˜์—ฌ ์ •์˜ํ•œ๋‹ค.
    • ImageAdapter๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ํŽธ์˜์ƒ ์ง์ ‘ ImageAdapter ๋‚ด๋ถ€์— Image ๋ฆฌ์†Œ์Šค ID์˜ ๋ฐฐ์—ด๋กœ ์„ค์ •
    • BaseAdapter์˜ย getCount(),ย getItem(),ย getItemId(),ย getView()ย ๋ฉ”์†Œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•จ
      • getCount()๋Š” ํ•ญ๋ชฉ์˜ ์ด ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•ดย mThumbIdsย ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋ฐ˜ํ™˜
      • getItem()๋Š” ํŠน์ • ์œ„์น˜์˜ ํ•ญ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•ดย mThumbIdsย ๋ฐฐ์—ด์˜ ์ง€์ •๋œ ์œ„์น˜์˜ ํ•ญ๋ชฉ์„ ๋ฐ˜ํ™˜
      • getItemId()๋Š” ํŠน์ • ์œ„์น˜์˜ ํ•ญ๋ชฉ ์•„์ด๋””๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์—ฌ๊ธฐ์„œ๋Š” ๋ฐฐ์—ด์˜ ์œ„์น˜(์ˆœ์„œ)๋ฅผ ํ•ญ๋ชฉ์˜ ์•„์ด๋””๋กœ ๊ฐ„์ฃผํ•จ
      • getView()๋Š” ์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ฃผ์–ด์ง„ ์œ„์น˜์˜ ํ•ญ๋ชฉ ๋ทฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ,ย mThumbIdsย ๋ฐฐ์—ด์˜ position ์œ„์น˜์— ์žˆ๋Š” ์ด๋ฏธ์ง€ ๋ฆฌ์†Œ์Šค๋ฅผ ImageView์˜ ์ด๋ฏธ์ง€๋กœ ์„ค์ •ํ•˜๊ณ , ์ด ์„ค์ •๋œ ImageView ๊ฐ์ฒด๋ฅผ ๊ทธ๋ฆฌ๋“œ ๋ทฐ์˜ ํ•ญ๋ชฉ๋ทฐ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
        • getView() ๋ฉ”์†Œ๋“œ์˜ ๋‘๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์ธ convertView๋Š” ์ด์ „์— ์ƒ์„ฑ๋œ ํ•ญ๋ชฉ๋ทฐ (์—ฌ๊ธฐ์„œ๋Š” ImageView)๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋งŒ์•ฝ ํ•ด๋‹น ์œ„์น˜์˜ ํ•ญ๋ชฉ๋ทฐ๊ฐ€ ์ฒ˜์Œ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด, ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€๋ทฐ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ํฌ๊ธฐ์™€ ์Šค์ผ€์ผํƒ€์ž…, ํŒจํŒ…์„ ์„ค์ •ํ•œ๋‹ค. ๋งŒ์•ฝ ์ด์ „์— ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด๋ผ๋ฉด, ์ด๋ฅผ ์žฌ์‚ฌ์šฉํ•œ๋‹ค.
        • ์ด๋ฏธ์ง€๋ทฐ์˜ scaleType์€ ์›๋ณธ ์ด๋ฏธ์ง€๋ฅผ ์ด๋ฏธ์ง€ ๋ทฐ์— ๋งž๊ฒŒ ํ™•๋Œ€ ๋ฐ ์ถ•์†Œ์‹œํ‚ฌ ๋•Œ, ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ง€๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์—ฌ๊ธฐ์„œ CENTER_CROP์€ ์ข…ํšก๋น„๋ฅผ ์œ ์ง€ํ•˜์—ฌ ์Šค์ผ€์ผ๋งํ•˜๋ฉฐ ๋ทฐ์˜ ํฌ๊ธฐ ์ด์ƒ์œผ๋กœ ์ฑ„์šฐ๊ฒŒ ๋จ์„ ์˜๋ฏธํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฏธ์ง€ ์ผ๋ถ€๊ฐ€ ์ž˜๋ฆด ์ˆ˜ ์žˆ๋‹ค.
  class ImageAdapter :
    BaseAdapter() {        // BaseAdapter()๋ฅผ ๋ถ€๋ฅด๋ฉด ์—๋Ÿฌ ๋œจ๋ฉด์„œ implement members ํ•˜๋ผ๊ณ  ๋œฌ๋‹ค. ํด๋ฆญํ•˜๋ฉด override fun๋“ค์ด ์ž๋™ ์ƒ์„ฑ๋œ๋‹ค.
    override fun getCount(): Int {
        return mThumbIds.size
    }

    override fun getItem(position: Int): Any {
        return mThumbIds[position]
    }

    override fun getItemId(position: Int): Long {
        return position.toLong()
    }

    override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
        val imageView: ImageView
        if (convertView == null) {
            imageView = ImageView(parent!!.context)
            imageView.layoutParams = AbsListView.LayoutParams(200,200)
            imageView.scaleType = ImageView.ScaleType.CENTER_CROP
            imageView.setPadding(8, 8, 8, 8)
        } else {
            imageView = convertView as ImageView
        }

        imageView.setImageResource(mThumbIds.get(position))    // mThumbIds์— ์žˆ๋Š” ํ•ด๋‹น ํฌ์ง€์…˜์˜ ์‚ฌ์ง„์„ ๋„ฃ๋Š”๋‹ค.
        return imageView
    }

    private val mThumbIds = arrayOf<Int>(
        R.drawable.sample_2, R.drawable.sample_3,
        R.drawable.sample_4, R.drawable.sample_5,
        R.drawable.sample_6, R.drawable.sample_7,
        R.drawable.sample_0, R.drawable.sample_1,
        R.drawable.sample_2, R.drawable.sample_3,
        R.drawable.sample_4, R.drawable.sample_5,
        R.drawable.sample_6, R.drawable.sample_7,
        R.drawable.sample_0, R.drawable.sample_1,
        R.drawable.sample_2, R.drawable.sample_3,
        R.drawable.sample_4, R.drawable.sample_5,
        R.drawable.sample_6, R.drawable.sample_7
    )
}
  • c. ์–ด๋Œ‘ํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  GridView๊ฐ์ฒด์— ์—ฐ๊ฒฐ(Kotlin์ฝ”๋“œ)

    • ๊ทธ๋ฆฌ๋“œ ๋ทฐ ์„ค์ •์˜ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๋Š” ImageAdapter๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด๋ฅผ GridView๊ฐ์ฒด์— ์—ฐ๊ฒฐ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
    class MainActivity : AppCompatActivity() {
      private lateinit var binding: ActivityMainBinding
    
      override fun onCreate(savedInstanceState: Bundle?) {
          super.onCreate(savedInstanceState)
    
          binding = ActivityMainBinding.inflate(layoutInflater)
          setContentView(binding.root)
    
          // ImageAdapter ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  GridView ๊ฐ์ฒด์— ์—ฐ๊ฒฐ
          binding.gridview.adapter = ImageAdapter()
      }
    }
  • d. ํ•ญ๋ชฉ ํด๋ฆญ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ

    • AdapterView์˜ ํ•ญ๋ชฉ์ด ํด๋ฆญ ๋  ๋•Œ, ํ˜ธ์ถœ๋˜๋Š” callbackmethod์˜ ์ธํ„ฐํŽ˜์ด์Šค

    • ํ•ญ๋ชฉ ํด๋ฆญ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ์ฝ”๋“œ ์ถ”๊ฐ€

      class MainActivity : AppCompatActivity() {
         private lateinit var binding: ActivityMainBinding
      
         override fun onCreate(savedInstanceState: Bundle?) {
             super.onCreate(savedInstanceState)
      
             binding = ActivityMainBinding.inflate(layoutInflater)
             setContentView(binding.root)
      
             // ImageAdapter ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  GridView ๊ฐ์ฒด์— ์—ฐ๊ฒฐ
             binding.gridview.adapter = ImageAdapter()
      
             // ํ•ญ๋ชฉ ํด๋ฆญ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ์ฝ”๋“œ ์ถ”๊ฐ€(ํด๋ฆญ๋˜๋ฉด์„œ ์ฝœ๋ฐฑ ๊ฐ’์œผ๋กœ parent, view, position, id๊ฐ€ ๋„˜์–ด์˜จ๋‹ค. ์—ฌ๊ธฐ์„  position๋งŒ ์ผ์ง€๋งŒ, view๋ฅผ ์“ด๋‹ค๋ฉด ๋‚ด๊ฐ€ ์„ ํƒํ•œ view๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.)
             binding.gridview.setOnItemClickListener { parent, view, position, id ->
                 Toast.makeText(this@MainActivity,"" + (position + 1) + "๋ฒˆ์งธ ์„ ํƒ", Toast.LENGTH_SHORT).show()
             }
         }
      }
  • ์‹คํ–‰ ๊ฒฐ๊ณผ

profile
์ฝ”๋ฆฐ์ด ๊ฐ•์•„์ง€ ์ง‘์‚ฌ๐Ÿถ

0๊ฐœ์˜ ๋Œ“๊ธ€