[android] RecyclerView 에 대한 맛보기 이야기 |
참조 : https://www.bignerdranch.com/blog/recyclerview-part-1-fundamentals-for-listview-experts/
-
RecyclerView 는 ListView 에 대비하여 다음과 같은 일들을 하지 않는다.
1. List Item 들을 화면에 배치하지 않는다. -> LayoutManager 가 이 일을 맡아서 한다.
2. View 들의 animation 을 관장하지 않는다. -> ItemAnimator 가 이 일을 맡아서 한다.
3. Scrolling 외의 touch event 를 관장하지 않는다.
-
RecyclerView 는 가급적 listview 본연의 일에만 집중하고 view, animation, touch event 등은 다른 곳으로 넘기고 싶어하는 철학으로 생겨났다.
그래서 setChoiceMode 라는 함수도 사라졌다.
-
RecyclerView 의 adapter 에는 generic 으로 ViewHolder 를 받는다.
이 때 이 ViewHolder 는 RecyclerView.ViewHolder 를 상속받는 것이 좋다.
RecyclerView 가 사용하는 기본 함수들이 정의되어 있다.
그래서 어떤 position 과 id 에 해당 viewholder 가 bound 되어 있는지 등의 정보를 알 수 있다.
public ViewHolderT onCreateViewHolder(ViewGroup parent, int pos){
View view = LayoufInflater.from(context).inflate(R.layout.layout);
return new ViewHolder(view);
}
public void onBindViewHolder(ViewHolder holder, int pos){
holder.bind(getData(pos));
}
위와 같은 방식으로 view holder 를 만들고 bind 하는 과정이 adapter 에 들어가 있다.
-
viewholder 는 onClick 함수를 가지고 있어서, click event 를 handle 하는 중요 포인트가 된다.
기존 ListView 에서는 누가 click event 를 handle 해야할지가 clear 하지 않았는데,
RecyclerView 에서는 Viewholder 가 이를 담당한다.
-
RecyclerView 는 다음과 같은 단점이 있다.
1. check state 를 관리하는 것을 직접 해주어야 한다.
2. check state 에 따라 view 를 보여주는 것도 직접 해주어야 한다.
3. context action mode 로 전환하는 것도 직접 해주어야 한다.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] Fragment 와 함께라면 Configuration Change 가 무섭지 않아. (0) | 2016.10.12 |
---|---|
[android] PageTransformer 와 함께 하는 ViewPager 의 화려한 animation (0) | 2016.10.04 |
[android] button 에 shake anim 효과 주기 (0) | 2016.09.22 |
[android] Render thread & Ripple ( Ripple 흉내내기 ) (0) | 2016.09.08 |
[android] ViewAnimator 뭐하는 녀석이야? (0) | 2016.09.05 |
댓글