woong's

Kotlin 으로 RecyclerView 만들어 보기 본문

Develop/Android

Kotlin 으로 RecyclerView 만들어 보기

dlsdnd345 2017. 5. 25. 14:53
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Kotlin 으로 RecyclerView 만들어 보기


이번 포스트에서는 Kotlin 으로 RecyclerView 를 만들어 보려 합니다. :D

Android 나 IOS 의 시작은 항상 ListView , TableView 로 시작을!!


화면에 RecyclerView 를 보여주기 위해서는 첫번째로 화면에 보여줄데이터가

필요합니다. VO 를 만들고 List 에 데이터를 먼저 생성해 보겠습니다.


1
2
3
4
class MusicVO(title:String) {
 
    var title: String = title
}
cs


간단하게 음악 타이틀을 가지고 있는 VO 를 생성 했습니다. Kotlin 에서는

Class 를 생성하면서 바로 생성자를 만들수 있어서 title 을 받는 VO를 만들어 보았습니다.

또한 Kotlin의 VO 는 Getter , Setter 를 만들지 않고 바로 사용할수 있어 생략했습니다.

VO를 만들었으니 이제 VO데이터를 생성해서 List에 담아 보겠습니다 :D


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    /**
     * music List 데이터 초기화
     */
    fun initMusicData(): MutableList<MusicVO> {
 
        var musicList: MutableList<MusicVO> = arrayListOf()
 
        for (x in 1..5) {
 
            var musicVO01 = MusicVO("SIGNAL")
            var musicVO02 = MusicVO("I LUV IT")
            var musicVO03 = MusicVO("All I Wanna Do")
            var musicVO04 = MusicVO("Merry Me")
 
            musicList.add(musicVO01)
            musicList.add(musicVO02)
            musicList.add(musicVO03)
            musicList.add(musicVO04)
 
        }
        return musicList
    }
cs


위에서 만든 VO에 데이터를 저장하고 List에 저장하는 코드를 작성했습니다.

fun 키워드를 통해 함수를 구성 하였고 : 기호를 통해서 반환 타입을 지정했습니다.

for 문이 기존의 자바랑 조금 쓰임새가 달라서 필자도 kotlin 을 검색하면서 작성해 보았습니다.

데이터가 준비가 되었습니다. 이제 데이터를 표현할 RecyclerView의 Adapter를 구성해 보겠습니다.


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
class MusicAdapter (musicList : MutableList<MusicVO>) : RecyclerView.Adapter<MusicAdapter.MusicViewHolder>() {
 
    private var musicList : MutableList<MusicVO>= musicList
 
 
    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): MusicViewHolder {
 
        var view = LayoutInflater.from(parent!!.context).inflate(R.layout.item_music,parent,false)
        return MusicViewHolder(view)
    }
 
    override fun onBindViewHolder(holder: MusicViewHolder?, position: Int) {
 
        var musicVO = musicList!![position]
        holder!!.textTitle.text = musicVO.title
    }
 
    override fun getItemCount(): Int {
        return musicList!!.size
    }
 
 
    class MusicViewHolder(view: View) : RecyclerView.ViewHolder(view) {
        var textTitle = view.findViewById(R.id.textTitle) as TextView
    }
}
cs


RecyclerView Adapter를 구성해 보았습니다.

Adapter 클래스도 마찬가지로 Class를 생성하면서 생성자를 작성하여 위에서 만든 데이터를 넘겨 받을수 있도록 작성하였습니다. 

생성자를 통해서 List를 넘겨 받아야 하기해 NULL 허용으로 변수를 만들었습니다. 나머지는 기존의 자바 함수의 역할

부분대로 구성해서 데이터를 받아 RecyclerView 위젯에 데이터를 출력 할수 있도록 구성 하였습니다.

이제 마지막으로 RecyclerView 를 구성하여 Adapter를 연결하는 부분을 작성 하면 Kotlin으로 RecyclerView를 구성할수 있습니다.


1
2
3
4
5
6
7
8
9
10
    /**
     * RecyclerMusic 초기화
     */
    fun initRecyclerMusic() {
 
        var musicAdapter = MusicAdapter(initMusicData())
 
        recyclerView.adapter = musicAdapter
        recyclerView.layoutManager = LinearLayoutManager(applicationContext)
    }
cs


위에서 만든 Adapter를 생성 하였습니다. 생성하는 동시에 생성자로 위에서 구성한  MusicList를 전달하였습니다.

생성한 adapter를 recyclerView에 연결하였습니다. 여기서 kotlin이 다른점은 기존의 자바에서 setAdapter를 통해서

adapter를 연결하였지만, Kotlin은 = 기호를 통해 표현하고 있습니다. 위와같이 간단한 코드를 통해서 RecyclerView를 구성해 보았습니다. 

전체 코드는 아래 링크 Git에 업로드 해두었습니다.


전체코드 보러가기


Comments