** RecyclerView와 CardView 사용하기 **


참고 URL : http://horajjan.blog.me/220739886248


'핵심만 골라 배우는 안드로이드 스튜디오 & 프로그래밍, 34, 35장'을 인용하였다 (예제 첨부) 

 
RecyclerView는 기존의 ListView보다 리스트를 구성하는 뷰를 관리하는 방법이 훨씬 더 효율적이다. 즉, 리스트 항목을 구성하는 기존 뷰가 스크롤되어 화면에서 벗어났을 때 새로운 뷰를 생성하는 대신 그것을 재사용한다(그래서 이름이 'recycler'다)
ListView와 다르게 RecyclerView에서는 다음의 세 가지 레이아웃 매니저를 선택할 수 있다. 따라서 리스트 항목이 사용자에게 보이는 방법을 더 다양하게 제어할 수 있다
  • LinearLayoutManager - 리스트 항목들이 수평 또는 수직의 스크롤 가능한 리스트로 나타난다
  • GridLayoutManager - 리스트 항목들이 격자(grid) 형태로 나타난다. 리스트 항목들이 균일한 크기일 때는 이 레이아웃 매니저를 사용하는 것이 좋다
  • StaggeredGridLayoutManager - 리스트 항목들이 일정하지 않은 크기의 격자 형태로 나타난다. 리스트 항목들의 크기가 동일하지 않을 때는 이 레이아웃 매니저를 사용하는 것이 좋다
  •  
     
RecyclerView에 나타나는 각 리스트 항목은 ViewHolder 클래스의 인스턴스로 생성된다.
ViewHolder 인스턴스는 RecyclerView에서 리스트 항목을 보여주는 데 필요한 모든 것을 포함한다. 즉, 보여줄 정보와 항목을 보여주는 데 사용할 뷰 레이아웃이다
ListView와 마찬가지로 RecyclerView도 어댑터가 필요하다. 어댑터는 사용자에게 보여줄 데이터와 RecyclerView 인스턴스 간의 중개자 역할을 한다. RecyclerView.Adapter 클래스의 서브 클래스로 생성되며, 최소한 다음의 메서드를 구현해야 한다.
이 메서드들은 어댑터가 지정된 RecyclerView 객체에 의해 다양한 시점에 호출된다
  • getItemCount() - 이 메서드에서는 리스트에 보여줄 항목의 개수를 반환해야 한다
  • onCreateViewHolder() - 이 메서드는 데이터를 보여주는 데 사용되는 뷰를 갖도록 초기화된 ViewHolder 객체를 생성하고 반환한다. 이때 그 뷰는 XML 레이아웃 파일을 인플레이트하여 생성된다
  • onBindViewHolder() - 이 메서드에서는 두 개의 인자를 받는다. onCreateViewHolder() 메서드에서 생성된 ViewHolder 객체와 보여줄 리스트 항목을 나타내는 정숫값이다. 이 메서드에서는 지정된 항목의 텍스트와 그래픽 데이터를 레이아웃의 뷰에 넣은 후, 그 객체를 RecyclerView에 반환한다. 그럼으로써 RecyclerView가 사용자에게 보여줄 수 있다​
 
다음으로 CardView 클래스는 카드 형태로 보여 줄 수 있는 사용자 인터페이스 뷰다. 일반적으로 RecyclerView 인스턴스를 같이 사용해서 리스트 형태로 보여준다. 이때 각 카드마다 그림자 효과와 둥근 모서리를 갖도록 구성할 수 있다
CardView 레이아웃 안에는 표준 레이아웃 매니저(RelativeLayout이나 LinearLayout 등)를 사용하는 어떤 복잡한 레이아웃도 포함할 수 있다
스크롤이 가능한 카드 리스트를 생성하기 위해 RecyclerView와 CardView를 같이 사용할 때는 RecyclerView의 onCreateViewHolder() 메서드에서 카드의 레이아웃 리소스 파일을 인플레이트한다
특정 리스트 카드 클릭에 반응하려면 CardView 인스턴스 속성을 android:clickable="true"로 설정하고 클릭 리스너를 단다. 클릭 리스너 안에서 어떤 카드가 선택되었는지 식별하기 위해서
는 RecyclerView.ViewHolder 클래스의 getAdapterPosition() 메서드를 호출하면 얻을 수 있다 


'[Android] - 개념 > RecyclerView' 카테고리의 다른 글

RecyclerView, Adapter, ViewHolder 개념  (0) 2017.01.18
RecyclerView 기본 개념  (0) 2017.01.18
Posted by 농부지기
,