본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] RecyclerView 에 대한 맛보기 이야기

by 돼지왕 왕돼지 2016. 9. 23.
반응형

 [android] RecyclerView 에 대한 맛보기 이야기


adapter, Android, animation, bind, bound, check state, click event, context action mode, context menu, Generic, Handle, ID, inflate, iNT, itemanimator, layoutinflater, layoutmanaager, list item, listview, onbindviewholder, onclick, oncreateviewholder, Parent, pos, Position, recyclerview, recyclerview.viewholder, scrolling, setchoicemode, touch event, View, viewgroup, viewholder, [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 로 전환하는 것도 직접 해주어야 한다.





반응형

댓글