티스토리 뷰

안녕하세요. 오늘은 RecyclerView에 대한 소개 시간을 갖겠습니다.

RecyclerView란?

Android 5.0때 소개된 리스트 뷰로 기존의 ListView의 단점을 보완한 새로운 레이아웃 요소 입니다. ListView의 단점인 애니메이션 처리와 커스텀 작업, 고비용의 findViewById를 계속적으로 요청하는 문제를 해결했습니다.
RecyclerView는 ViewHolder패턴을 강제하는 방법으로 제작되었으며 이를 통해 성능상의 장점을 제공합니다.

RecyclerView 사용법

일단 1번째로 gradle을 추가합니다.

compile 'com.android.support:recyclerview-v7:26.1.0'

이 후 xml에 필요한 레이아웃에 RecyclerView를 넣습니다.

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="@drawable/all_white_back"
    android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

이제 RecyclerView에 대한 기본적인 설정을 합니다.

recyclerView.layoutManager = LinearLayoutManager(activity)
recyclerView.adapter = RecyclerAdapter()

layoutManager의 종류는 3가지로 LinearLayoutManager, GridLayoutManager, StaggeredGridLayout으로 각각의 동작 특징이 있습니다.
이에 관한 소개는 다음 포스트로 뵙겠습니다.

이 후 customAdapter를 설정하여야 합니다.

class MainRecyclerAdapter(): RecyclerView.Adapter<CustomViewHolder>(){

    val data: Array<String>

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int):      RecyclerView.ViewHolder {
        // 여기서 RecyclerView에서 사용할 레이아웃을 설정하는 함수입니다.
        // 사용할 layout을 layoutInflater를 이용하여 호출합니다.
        val view = LayoutInflater.from(parent.context)
                    .inflate(R.layout.호출할 레이아웃, null)
        return CustomViewHolder(view)
    }

    override fun getItemCount(): Int = // 표현할 아이템의 갯수를 반환하세요

    override fun onBindViewHolder(holder: CustomViewHolder,             position: Int) {
        // 여기에서는 아이템에 데이터를 넣는 함수입니다.
        // holder과 position을 통해 아이템에 데이터를 넣습니다.
        holder.bind(data[position])
    }

}

마지막으로 CustomViewHolder를 만듭니다.

class CustomViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){

    fun bind(data: String){
        view.apply{
            textView.text = data
            // 아이템의 textView에 데이터를 넣습니다.
        }
    }

}

간단하죠? 이러한 방식을 통해 RecyclerView를 구현합니다.
RecyclerView에 대한 질문이 있으면 댓글로 남겨주세요!
최선을 다해 답변드리겠습니다.

감사합니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday