D

소스 다운로드 :

RecylerListViewExamProject.zip

이번 Android L 프리뷰 버전에 새롭게 등장한 뷰들이 몇 개가 있다. 그 중 제일 눈여겨봐야 할 게 RecyclerView 인 것 같아서 분석을 해볼려고 한다.

우선 RecylerView의 장점은 기존 ListView보다 좀 더 유연하고 성능이 향상되고 커스터마이징을 하는 부분이 상당히 개선됐다고 강조를 한다.

구조를 살펴보면 대략 이런 구조이다.

RecylerView ( LayoutManager) – Adapter (DataSet) 이다.

기존 리스트뷰를 그대로 사용하되 추가적인 LayoutManager를 적용하면 된다.

그럼 이 LayoutManager가 과연 무엇일까..

RecylerView를 생성시 필수적으로 생성되어야 하며, 이 Manager를 통해서 아이템들의 뷰 형태를 관리를 해주고 있다.

  1. LinearLayoutManager – 수평 / 수직의 스크롤 형태를 만듬
  2. GridLayoutManager – 그리드 레이아웃 형태
  3. StaggeredGridLayoutManager – 높이가 불규칙적이고 다양한 형태의 그리드 리스트 (오우..이제 이게 공식적으로 지원이 되는군요..ㅠㅠ)

이밖에도 많은 확장 LayoutManager를 만들어서 적용해서 다양한 형태를 개발 할 수 있다.

Adapter 부분도 이전과 다른 형태를 갖는다.

우선 RecyclerView는 RecyclerView.Adapter를 베이스로 한 Adapter를 가져야 한다.

필수적으로 세가지의 함수를 인터페이스를 구현해야 된다.

@Override

public int getItemCount() {}

  • ListView의 Adapter에서 사용하는 리스트 개수 구하는 함수

@Override

public void onBindViewHolder(ViewHolder holder, int position) {}

  • 주어진 ViewHolder에 데이터들을 바인딩하는 역할 (Adapter의 getView()와 동일)

@Override

public ViewHolder onCreateViewHolder(ViewGroup parent, int arg1) {}

  • ViewHolder 를 생성하는 함수

 

예전 Adapter에서는 ViewHolder를 선택적으로 쓰면 좋고 귀찮으면 빼서 사용을 했지만 이번 RecylerView에서는 필수적으로 사용을 해야한다.ㅠ

아주 기본적인 내용을 파악했으니 코드 넣어서 일단 작동이 되는 지 테스트를 해보자.

결과물은 다음과 같다. 정말 간단하다..;;

 

만들고 보니.. 기존 리스트뷰와 큰 차이가 없어 보인다가 아니라..없다..ㅠㅠ

일단 코드를 잠깐 살펴보면

Layout 은 ListView대신 밑에 적혀있는 것 처럼 RecyclerView를 사용하면 된다..

MainActivity 에선 이걸 바인딩해주면 끝..(넘 쉽나..ㅋㅋ)

기존 ListView처럼 뷰 바인딩하고 Adapter연결해주면 끝..그리고 중요한게 꼬~옥 setLayoutManager를 지정해줘야 런타임시 에러가 안난다..

에러내용이 setMesure 머시기 하면서 NullPoinerExption 을 뽑아낸다.. (중요!!)

마지막으로 Adapter를 보겠다.

 

별거 없지만 처음 언급했던 세가지 메소드를 꼭 호출해 줘야 하는게 중요하다.

소스 파일은 위에 첨부했으며 초보분들은 보고 참고하시면 될 것 같다.

 

참고 사이트 :

  1. http://www.kmshack.kr/android-recyclerview
  2. https://github.com/antoniolg/RecyclerViewExtensions
  3. https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html
  4. http://www.vogella.com/tutorials/AndroidRecyclerView/article.html

 

이상입니다.

+ Recent posts