[안드로이드/AdapterView] Custom ListView

2022. 9. 14. 09:43· Android
목차
  1. Custom ListView
반응형

Custom ListView

  • ListView의 Item을 보여주기 위해서 기본적으로 안드로이드에서 제공하는 simple_list_item_1 을 사용
  • 해당 layout을 사용자가 custom 하여 item을 다양한 스타일로 보여주는 것
  • 사용자가 커스텀한 layout  xml 파일과 해당 layout을 지정하여 adapter class

* 이 포스팅에서는 하나의 항목에 나타나는 데이터를 사용자가 직접 커스텀하는 방법을 다루기 때문에 adapter class는 ArrayAdapter 와 simpleAdapter를 사용한다.

 

Adapter Class1 (하나의 뷰를 한 항목에 셋팅)

  • Adapter Class 객체를 생성할 때  파라미터 조정 필요
val adapter = ArrayAdapter(this, R.layout.row, R.id.rowTextView, data1)

    - 첫번째 파라미터 : context

    - 두번째 파라미터 : 사용자가 원하는 스타일로 item 을 보여주기 위해 커스텀한 layout 

    - 세번째 파라미터 : 커스텀 layout에서 항목별로 데이터를 보여줄 뷰의 id (ex. textview, imageview)

    - 네번째 파라미터 : 보여줄 데이터 배열

class MainActivity : AppCompatActivity() {

	val mainBinding : MainActivityBinding = new MainActivityBinding()

	val data1 = arrayof("문자열1","문자열2","문자열3","문자열4","문자열5")
    
    	override fun onCreate(savedInstanceState : Bundle?) {
    		super.onCreate(savedInstanceState)
        	setContentView()
        
        //Adater Class 파라미터 조정
        val adapter1 = ArrayAdapter(this, R.layout.row, R.id.rowTextView, data1)
        mainBinding.list1.adapter = adapter1 //activity 위에 listview를 넣고 그 listview의 adapter를 설정
        
    }

 

Adapter Class2  (다수의 뷰를 한 항목에 셋팅)

val adapter = SimpleAdapter(this, dataList, R.layout.row, keys, ids)

    - 첫번째 파라미터 : context

    - 두번째 파라미터 : 보여줄 데이터 배열

    - 세번째 파라미터 : 사용자가 원하는 스타일로 item 을 보여주기 위해 커스텀한 layout 

    - 네번째 파라미터 : 데이터 배열에 저장한 value를 꺼내기 위한 key 값 배열

    - 다섯번째 파라미터 : 커스텀한 layout에서 항목별로 데이터를 보여줄 view의 id

class MainActivity : AppCompatActivity() {

	val mainBinding : MainActivityBinding = new MainActivityBinding()

	val data1 = arrayof("토고","프랑스어","스위스","스페인","독일")
        val data2 = arrayOf("togo", "france", "swiss", "spain", "german")
    
    override fun onCreate(savedInstanceState : Bundle?) {
    	super.onCreate(savedInstanceState)
        setContentView()
        
        val dataList = ArrayList<HashMap<String, any>>()
        
        for(i in imgRes.indices){
            val map = HashMap<String, Any>() // HashMap 원소 하나가 이미지1개,문자열2개 로 구성
            map["img"] = imgRes[i]
            map["data1"] = data1[i]
            map["data2"] = data2[i]
            
            dataList.add(map)
        }
        
        //HashMap에 데이터를 저장했을 때 사용했던 이름 배열
        val keys = arrayOf("img", "data1", "data2")  // dataList에서 map의 key  
        val ids = inArrayOf(R.id.rowImageView, R.id.rowTexteView1, R.id.rowTexteView2) //view id
        
        /*
         * dataList에 있는 HashMap 데이터에서
         * keys를 key값으로 하여 vlaue를 불러오고 
         * value는 사용자가 커스텀한 레이아웃 row에 존재하는 뷰에 배치됨.
         * 그리고 그 뷰가 무엇인지는 ids 배열에 지정되어 있음
        */
        
        //Adapter Class 
        val adapter1 = SimpleAdapter(this, dataList, R.layout.row, keys, ids)
        
        mainBinding.list1.adapter = adapter1
        
        // 람다식을 이용한 리스너 구현(어차피 오버라이딩할 메소드 1개임)
        mainBinding.list1.setOnItemClickListener { parent, view, position, id ->
        	// 첫번째 : 이벤트가 발생한 항목을 가지고 있는 adapterview
        	// 두번째 : 이벤트가 발생한 항목 view
        	// 세번째 : 이벤트가 발생한 항목의 index
            
            mainBinding.textView.text = "${data1[position]} 항목을 터치하였습니다."
            // ex.토고 항목을 터치하였습니다.
        }
        
        
    }

- dataList(리스트)는 이미지1개와 문자열 2개로 구성된 HashMap 배열 

- 커스텀 한 레이아웃에는 이미지1개와 텍스트2개에 대한 view가 존재, ids 배열에는 view에 대한 id 정보가 존재

- keys 배열에 정의해놓은 key 값으로 dataList-HashMap 의 value를 불러오고 value는 ids 배열의 view id와 1대1 매칭
(어떤 데이터가 어떤 view에 들어갈지 명시해 놓은것)

 

 

https://sunnybong.tistory.com/156

 

[코틀린코드연습장] 안드로이드 리스트뷰 생성

udemy 강좌를 보다가 까먹을것만 같아... 기재 리스트에 리스트로 활용할 array를 구성한다. 리스트뷰를 처음 만들 때,adapter를 설정하여, 리스트뷰의 adapter로 정의한다. * onitemClickListener : 리스트를

sunnybong.tistory.com

 

반응형

'Android' 카테고리의 다른 글

[안드로이드/Widget] 다양한 view/widget & 사용법  (0) 2023.02.20
[안드로이드/Style] 색상 지정  (0) 2022.09.15
[안드로이드/AdapterView] AdapterView의 개념과 ListView, GridView  (0) 2022.09.13
[안드로이드/Layout] Layout의 개념/종류  (0) 2022.09.06
[안드로이드/View] View Binding  (0) 2022.09.06
  1. Custom ListView
'Android' 카테고리의 다른 글
  • [안드로이드/Widget] 다양한 view/widget & 사용법
  • [안드로이드/Style] 색상 지정
  • [안드로이드/AdapterView] AdapterView의 개념과 ListView, GridView
  • [안드로이드/Layout] Layout의 개념/종류
gangmini
gangmini
gangmini
게으른J 의 테크로그
gangmini
전체
오늘
어제
글쓰기방명록관리자
  • 분류 전체보기 (127)
    • 인공지능(AI) & 데이터 분석 (5)
    • Android (91)
      • Coroutine (3)
      • Compose (0)
      • 안드로이드 CS (0)
    • Kotlin (3)
    • Data Structure (0)
    • 알고리즘 (20)
      • 알고리즘 이론 (11)
      • 백준(BOJ) 문제 풀이 (9)
    • Build Tool (2)
    • Git (2)
    • 일본어 (0)
    • 기타(취준, 활동) (0)


인기 글



최근 댓글



최근 글

hELLO · Designed By 정상우.v4.2.2
gangmini
[안드로이드/AdapterView] Custom ListView
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.