ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] RecyclerView 사용법
    안드로이드 2022. 3. 5. 21:17
    728x90
    반응형
    반응형

    RecyclerView란

    Android에서 List형태로 구성하고 싶을 때 사용하는 View입니다. 기존의 ListView는 커스텀하기에는 구조적인 문제로 많은 제약이 따랐으며, 구조적인 문제로 인해 성능 문제가 있었습니다. ViewHolder 패턴을 활용해 View를 재활용해 사용할 수 있어 메모리 관리에 매우 효율적입니다. 🔥

     

    RecyclerView의 재활용성♻️

    RecyclerView의 재활용성

     

    ListView와는 다르게 RecyclerView는 사용자가 스크롤 할 때마다 맨 위에 위치한 뷰 객체를 삭제하지 않고 아래쪽에서 새로 나타날 파란색 뷰 위치로 객체를 이동시킵니다. 즉 뷰 객체 자체를 재사용하는 것인데, 중요한 점은 뷰 객체를 재사용할 뿐이지 뷰 객체가 담고 있는 데이터는 새로 갱신되는 것이므로 효율적입니다.

    주요 클래스👀

    • RecyclerView.ViewHolder : RecyclerView에 보여지는 뷰 객체를 보관하는 Holder 객체입니다. RecyclerView는 inflate를 최소화하기 위해 뷰를 재사용하는데, 이때 각 뷰의 내용을 업데이트하기 위해 findViewById를 매번 호출해야 합니다. 이로 인해 성능 저하가 일어남에 따라 ItemView의 각 요소를 바로 액세스 할 수 있도록 저장해 두고 사용하기 위한 객체입니다.
    class ViewHolder(view : View): RecyclerView.ViewHolder(view){
            val textview = view.findViewById<TextView>(R.id.data_text)
        }
    • LayoutManager : 우선 간단하게 스크롤을 위아래로 할지, 좌우로 할지 정하며 더 이상 표시되지 않는 뷰 객체를 재활용할 시기를 결정하는 역할을 합니다.
    recyclerView.layoutManager = LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)
    • RecyclerView.AdapterRecyclerView에 보여질 데이터 리스트를 RecyclerView에 바인딩시켜주기 위한 사전작업이 이루어지는 객체입니다.
    recyclerView.adapter = RecyclerViewAdapter(data)

     

     

     

     

    RecyClerView.Adapter

    • getItemCount : RecyclerView에 뿌려줄 아이템 항목의 개수를 반환하며 가장 먼저 호출됩니다.
    override fun getItemCount(): Int = data.size
    • onCreateViewHolder : getItemCount다음으로 호출되는 함수로 이름처럼 ViewHolder가 생성되는 함수입니다.
    override fun onCreateViewHolder(
            parent: ViewGroup,
            viewType: Int
    ): ViewHolder {
    	return ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.item_layout,parent,false))
    }
    • onBindViewHolder : 생성된 ViewHolder에 데이터를 바인딩해주는 함수입니다.
    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    	holder.textview.text = data[position]
    }

     

     

     

    결과👇🏻

    다음과 같이 RecyclerView에 데이터가 담겨서 스크롤하여 볼 수 있게 됩니다.👍🏻

     

    출처
    https://wooooooak.github.io/android/2019/03/28/recycler_view/
    https://developer.android.com/guide/topics/ui/layout/recyclerview?hl=ko
    728x90
    반응형

    댓글

Designed by ZibroTistory.