[Android] RecyclerView 사용하기

Jinny·2021년 2월 27일
0

Android

목록 보기
16/32


아이템을 보여주는 대표적인 View로는 Recyclerview, ListView, AddView가 있다.
뒤 두 View는 현재는 잘 안쓰인다고는 하는데 현직자가 아니라 잘 모르겠고!
제일 많이 쓰이고 있는 Recyclerview를 정리해놔야겠다!!!

🚩 RecyclerView

RecyclerView는 여러가지 Item을 화면에 출력해주며 이를 동적으로 표현해주는 컨테이너라고 할 수 있다.
ViewHolder 개념을 포함하고 있기 때문에 ListView의 개선판 이라고 볼 수 있다. (그래서 유연하다!)

xml에 추가하기

<androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

🚩 사용하기

  1. 기본 설정 하기
recyclerView = view.findViewById(R.id.rv_search)
// Adpater 연결
recyclerView.adapter = MyRecyclerViewAdpater()
// LayoutManager 연결
recyclerView.layoutManager = LinearLayoutManager(activity)
  • 여기서 LayoutManager은 item을 배치할 타입을 지정해준다.
    종류는 3가지가 있다.
    - LinearLayoutManager : 수직 / 수평 방향을 배치한다.
    - GridLayoudManager : 그리드 형태의 2단,3단 등 으로 배치한다.
    - StaggeredGridLayoutManager : 높이가 불규칙한 item들을 그리드 화면으로 배치한다.
  1. RecyclerView Adapter 클래스 만들기
class MyRecyclerViewAdpater :
        RecyclerView.Adapter<MyRecyclerViewAdpater.MyViewHolder>() {
        
        override fun onCreateViewHolder(
            parent: ViewGroup,
            viewType: Int
        ): MyRecyclerViewAdpater.MyViewHolder {
            //마지막 인자 -> parent에 합성 시킬지
            val view = LayoutInflater.from(parent.context).inflate(R.layout.movie_item, parent, false)
            return MyViewHolder(view)
        }

        override fun getItemCount(): Int {
        	//보여줄 화면의 갯수
            return list.size
        }

        @SuppressLint("ResourceAsColor")
        override fun onBindViewHolder(
            holder: MyRecyclerViewAdpater.MyViewHolder,
            position: Int
        ) {
           holder.apply {
               //뷰홀더에서 가지고온 item들로 해야하는 작업을 여기서 실행
               }
           }
        }
  1. Recycler의 ViewHolder 만들어주기
class MyViewHolder(val view: View) : RecyclerView.ViewHolder(view) {
            //위의 onCreateViewHolder에서 생성된 view를 가지고 실행한다.
            
            //item을 담을 xml의 item들을 가지고 오기
            //예를들어
            val rankTextView: TextView = view.findViewById(R.id.rank)
            
        }

출처: 썸네일 출처
profile
신입 개발자👩‍💻

0개의 댓글