RecyclerView
“A flexible view for providing a limited window a lare data set”
리사이클러뷰는 리스트뷰랑 흡사한 ViewGroup 중 하나다.
리사이클러뷰가 하는 역할은 여러 데이터 셋을 사용자 지정에 따라서 나열해 주는 역할을 한다.
카카오톡, 트위터 등 위에서 아래로 제스쳐를 취하면서 데이터를 보거나
혹은 한 영역에서 좌우로 여러가지 선택항목이 존재한다면 ListView 혹은 RecyclerView로 구현이 되어져 있다.
따라서 그러한 수많은 데이터들을 수동으로 나열하기에는 비효율적이고 코드 생산성 면에서 좋지 않기 때문에 리스트 형태로 나열되는 방식을 많이 사용한다.
ListView 와 RecyclerView 차이점이 무엇인가?
리스트뷰같은 경우 뷰 바인딩을 계속적으로 해주어 성능저하가 일어난다 하지만 리사이클러뷰는 ViewHolder를 구현해서 뷰 바인딩을 한 번만 해준 다음 이후 필요할때마다 데이터 값만 바꾸어 재사용 할 수 있다.
이러한 차이점은 대량의 데이터를 받아왔을 때 차이가 나게 되는데 생각해보면 모바일에선 보여지는 화면의 영역이 한정적이다.
즉 리스트뷰로 불러온 데이터들을 보여주는데 한계가 있다는 것이다.
한계가 있기에 보여지는 부분이 제한적이라는 것이고 만약 보여지는 부분이 계속 적으로 바뀐다고 봤을때 데이터만 바꾸고 이미 생성해 놨던 객체는 다시 사용하면 메모리 관리 측면에서 훨씬 유리할 것이다.
왜? 객체를 다시 처음부터 생성해야되는 리스트뷰 객체는 없어진 화면에서 다시 불러와 데이터 값만 바꾸면 다시 처음부터 객체+데이터를 만들 수고를 덜기 때문이다.
[Listview]
“생성시”
데이터를 표시하기 위한 객체를 생성함과 동시에, 값을 넣어서 -> 보여줌
“삭제시”
값이 들어있는 객체 자체를 없애버림 후에 필요할때 다시 생성
[RecyclerView]
“생성시”
데이터를 위한 객체를 생성해주고 값을 넣어서 -> 보여줌
“삭제시”
값이 들어있는 객체를 없애지 말고 화면에서 사라진 객체를 다시 맨 아래 스택으로 넣어주고 객체안에 있는 값만 바꿔줌
RecyclerView Flow
RecyclerView
리사이클러뷰는 ViewGroup의 일종입니다 즉 제스쳐를 취해서 위로 넘기던 좌우로 넘기던 넘겨지는 영역부분 그걸 리사이클러뷰 라고 한다. View들이 객체단위로 만들어져 이곳에 보여지게 된다.
Adapter
리사이클러뷰에 표시될 아이템 뷰 즉 사용자가 정의한 리스트 데이터 값들을 아이템 뷰로 만들어주는 공간이다.
ViewHolder
뷰 홀더는 아이템 뷰를 리사이클러뷰에 표시하기 위해 객체로 만들어주는 역할을 한다. 이 뷰홀더를 이용해서 객체를 다시금 재사용한다.
OncreateViewHolder
앞서 뷰 홀더에 사용자가 정의할 아이템을 뷰 홀더에 담아주었다. 그럼 이제 이 데이터를 리사이클러뷰에 표시하기 위해서 뷰 홀더를 객체화 시켜준다.
이때 뷰 홀더가 객체화가 되는거지 아직 실질적 데이터가 들어있지 않았다.
OnBindViewHolder
이 메서드에서 뷰 홀더를 객체화 시켰으니 이곳에 이제 데이터를 연결해주는 작업을 한다.
GetitemCount
사용자가 지정한 리스트의 총 사이즈를 반환해준다.
만약 리스트에 데코레이션 등을 적용하고 싶다면 getitemcount의 개수를 비교해서 사용할 수 있을것이다.