Android

Multiple View Type Trong RecyclerView

Giới thiệu

Tiếp nối các bài viết về RecycylerView hôm nay tôi sẽ giới thiệu cho các bạn ReyclerView nâng cao hơn rất nhiều đó là RecyclerView có nhiều row khác nhau hay được gọi là RecyclerView Multiple View Type. Tôi nghĩ rằng các bạn thấy RecyclerView này rất nhiều ví dụ như new feed của Facebook. Và cách tạo ra ReyclerView Multiple View Type như thế nào thì bài viết này sẽ hướng dẫn các bạn.

Nếu bạn nào chưa có kiến thức về RecyclerView trong Android thì hãy xem lại 2 bài viết của tôi ở link dưới đây:

Sử dụng RecyclerView trong Android
Xử Lý Animation Trong RecyclerView

Tất cả ví dụ trong bài viết đều được viết trên Android Studio 2.1.2

Custom Adapter RecyclerView Multiple View Type

Việc chúng ta xây dựng RecylerView có nhiều row item khác nhau cũng giống như RecyclerView chỉ có 1 row item nhưng có một chút khác biệt ở ở Custom Adapter như sau:

+ Phải tạo n ViewHolder ứng với n row item.

+ Override lại phương thức getItemViewType(int position) để lấy về type tương ứng với từng position trong collection

+ Trong phương thức onCreateViewHolder phải dựa vào type để tạo ViewHolder tương ứng.

+ Trong phương thức onBindViewHolder cũng phải dựa vào type để bind data tương ứng vào ViewHolder.

Sau đây tôi sẽ đi vào phần viết CustomAdapter.

Trước tiên tôi tạo ba file xml tương ứng với 3 row item như sau:

  • row_text.xml: Đơn giản row item này có một TextView để hiển thị text.
  • row_image.xml: Row item hiển thị một hình ảnh ImageView.
  • row_user.xml: Row item này gồm có 2 TextView hiển thị tên và địa chỉ của user.

File row_text.xml

File row_image.xml

File row_user.xml

Class User.java lưu thông tin User

Tiếp theo chúng ta tạo một CustomAdapter:

Có 3 ViewHolder như sau:

TextViewHolder

ImageViewHolder:

UserViewHolder:

Override lại phương thức getItemViewType

Xử lý trong phương thức onCreateViewType

onBindViewHolder

Và đây là Source code toàn bộ class CustomAdapter.java

Sau khi đã tạo xong CustomAdapter việc còn lại chúng ta chỉ add RecyclerView vào main_activity.xml và setup cho RecyclerView trong MainActivity.java như sau:

File main_activity.xml

Setup trong MainActivity.java

Các bạn thấy rằng mỗi phần tử trong List đều có kiểu Object. Bởi vì tôi muốn add bất cứ kiểu dữ liệu nào vào List này.

Chạy kết quả demo các bạn sẽ thấy một kết quả tuyệt vời như dưới đây:

Source code sử dụng trong bài viết: ReyclerViewMultipleViewType

Kết luận

Qua ba bài viết về RecyclerView tôi hy vọng rằng các bạn có thể vận dụng kiến thức mà tôi truyền đạt vào trong những Project của các bạn.

Có học vấn không có đạo đức như một kẻ xấu; có đạo đức không có học vấn như một người thô bỉ.

Roosevelt (Mỹ)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.