본문 바로가기
안드로이드/AdapterView

안드로이드 Custom ListView 2

by 김어찐 2022. 6. 7.
728x90

SimpleAdapter

 

개발자가 ListView 의 항목을 자유롭게 디자인 했을 때 사용하는 Adapter Class이다.
ListView의 항목 내에 배치된 View들을 직접 지정하면서 데이터를 설정할 수 있다.

 

package com.example.customlistview

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.SimpleAdapter
import kotlinx.android.synthetic.main.activity_main.*
import java.util.*

class MainActivity : AppCompatActivity() {

    val imgRes = intArrayOf(
        R.drawable.imgflag1,R.drawable.imgflag2,R.drawable.imgflag3,R.drawable.imgflag4,
        R.drawable.imgflag5,R.drawable.imgflag6,R.drawable.imgflag7,R.drawable.imgflag8,
    )
    val data1 = arrayOf(
        "토고","프랑스","스위스","스페인","일본","독일","브라질","대한민국"
    )
    val data2 = arrayOf(
        "togo","france","swiss","spain","japan","german","brazil","korea"
    )

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // simple adapter에 셋티앟ㄹ 데이터를 가지고있을 ArrayList
        val dataList = ArrayList<HashMap<String,Any>>()

        for (i in 0..(imgRes.size-1)) {
            var map = HashMap<String, Any>()
            map.put("img",imgRes[i])
            map.put("data1",data1[i])
            map.put("data2",data2[i])
            dataList.add(map)
        }

        // HashMap에 데이터를 저장했을 때 사용했던 이름 배열
        val keys = arrayOf("img","data1","data2")
        // 데이터를 세팅할 View의 id 배열

        val ids = intArrayOf(R.id.rowImageView,R.id.rowTextView1,R.id.rowTextView2)
        val adapter1 = SimpleAdapter(this,dataList,R.layout.row,keys,ids)

        list1.adapter = adapter1

        list1.setOnItemClickListener { parent, view, position, id ->
                textView.text = "${data1[position]} 항목을 터치하였습니다"
        }

    }
}

 

 

 

728x90

'안드로이드 > AdapterView' 카테고리의 다른 글

안드로이드 GridView  (0) 2022.06.07
안드로이드 Spinner  (0) 2022.06.07
안드로이드 CustomAdapter  (0) 2022.06.07
안드로이드 Custom ListView1  (0) 2022.06.06
안드로이드 ListView  (0) 2022.06.02