본문 바로가기
프로그래밍/Kotlin

안드로이드 RecyclerView 사용법

by Youngs_ 2021. 12. 12.

RecyclerView를 사용하기 위해서는 모델, 어댑터가 추가로 필요하다.

모델은 어댑터 하나하나를 담아놓는 그릇이라고 생각하면 되고,

어댑터는 리스트 한줄을 불러올때(?)마다 실행되는것이라고 생각하면 된다.

 

adpater.kt

-> 이곳에서 각 리스트를 불러올때마다 실행될 행동을 작성한다.

class MainActivityAdapter: RecyclerView.Adapter<MainActivityAdapter.MyViewHolder>() {

    var datalist = mutableListOf<MainActivityModel>()//리사이클러뷰에서 사용할 데이터 미리 정의 -> 나중에 MainActivity등에서 datalist에 실제 데이터 추가

    inner class MyViewHolder(private val binding: RecylerviewBookItemBinding): RecyclerView.ViewHolder(binding.root) {

        fun bind(dogData:MainActivityModel){
            binding.textviewBookName.text=dogData.name
            binding.textviewBookReview.text= dogData.age.toString()
        }
    }


    //만들어진 뷰홀더 없을때 뷰홀더(레이아웃) 생성하는 함수
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val binding= RecylerviewBookItemBinding.inflate(LayoutInflater.from(parent.context),parent,false)
        return MyViewHolder(binding)
    }

    override fun getItemCount(): Int =datalist.size

    //recyclerview가 viewholder를 가져와 데이터 연결할때 호출
    //적절한 데이터를 가져와서 그 데이터를 사용하여 뷰홀더의 레이아웃 채움
    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        holder.bind(datalist[position])
    }
}

 

model.kt

data class MainModel (
    val name : String,
    val age : Int
)

 

MainActivity.kt

class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding
    lateinit var mainActivityAdapter: MainActivityAdapter
    val datas = mutableListOf<MainActivityModel>()

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

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

        initList()
    }

    private fun initList() {

        with(datas){
            add(MainActivityModel("dog1",20))
            add(MainActivityModel("dog2",20))
            add(MainActivityModel("dog3",20))

        }

        val adapter=MainActivityAdapter() //어댑터 객체 만듦, 해당 줄을 실행할때 adapter 코드가 실행된다.
        adapter.datalist=datas //데이터 넣어줌
        binding.listview.adapter=adapter //리사이클러뷰에 어댑터 연결
        binding.listview.layoutManager= LinearLayoutManager(this) //레이아웃 매니저 연결

    }
}

참고링크

https://velog.io/@24hyunji/AndroidKotlin-RecyclerView-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0

댓글