Android RecyclerView vs ListView

orange.jpg

Android là một nền tảng phát triển. Gần đây phiên bản chính thức của Android 5.0 Lollipop đã được phát hành. Cùng với sự giới thiệu chính thức của thư viện RecyclerView support v7.

Theo tài liệu chính thức thì RecyclerView là một cải tiến đáng kể của Listview. Nó chứa nhiều tính năng mới như ViewHolder, ItemDecorator, LayoutManager, và SmoothScroller.

Nhưng có một điều mà chắc chắn mang lại cho nó một khía cạnh hơn các ListView là; khả năng có animations trong khi thêm hoặc loại bỏ item.

Tôi sẽ so sánh các tính năng khác nhau của RecyclerView và ListView và hình thành ý kiến tại sao nó phải được sử dụng trong việc triển khai mới..

Khác nhau giua RecyclerView và ListView

1.View Holders

Trong ListView, khái nghĩa View Holder là một đề nghị cho việc giữ lại các tham chiếu của View. Nhưng nó không phải là một sự ép buộc. Mặc dù bằng cách không làm như vậy, ListView sử dụng lại các View cũ. Việc ko tái sử dụng lại View sẽ dẫn đến việc gây lag cho ListView.

Vấn đề này được giải quyết trong RecylerView bởi việc sử dụng lớp RecyclerView.ViewHolder. Đây là một trong những khác biệt lớn trong RecyclerView và ListView. Khi thực hiện với RecyclerView, lớp này được dùng để định nghĩa một đối tượng ViewHolder mà được sử dụng trong Adapter tương ứng với một vị trí xác định. Một điểm khác biệt nữa tại đây, đó là khi sử dụng adapter với RecyclerView, cung cấp một ViewHolder là bắt buộc. Việc này hơi phức tạp, nhưng nó giải quyết đc vấn đề gặp phải trong Listview.

2. Layout Manager

Khi nói về Listview, thường chỉ một loại Listview được sử dụng, chẳng hạn cuộn theo chiều dọc. Bạn không thể cuộn Listview theo chiều ngang. Mặc dù ta có thể custom nhưng đó không phải là cách đúng đắn nhất.

Nhưng khi chúng ta so sánh giữa RecyclerView vs ListView, chúng có thể hỗ trợ cuộn theo chiều ngang khá tốt. Thực tế nó hỗ trợ nhiều dạng của list. Để làm được điều này, nó sử dụng lớp RecyclerView.LayoutManager. Đây là một tính năng mới mà không có ở Listview. RecyclerView hỗ trợ 3 thể loại sau :

  • LinearLayoutManager : được sử dụng phổ biến. Mặc dù vậy chúng ta có thể dùng với cả khi cuộn dọc và cuộn ngang.

  • StaggeredGridLayoutManager: tạo list so le với nhau.

  • GridLayoutManager : được sử dụng giống như gridview.

3. Item Animator

Animations trong list là một chiều hướng hoàn toàn mới, với khả năng là vô tận. Trong Listview, không có đối tượng nào hỗ trợ việc tạo animation khi thêm, sửa hoặc xóa items.

Một khía cạnh khác khi so sánh RecyclerView vs ListView, RecyclerView có lớp RecyclerView.ItemAnimator cho việc xử lí animation. Thông qua lớp này, ta có thể tạo animation khi thêm, sửa hoặc xóa item.

4. Adapter

Adapter khi sử dụng với Listview là đơn giản để thực hiện. Phương thức chính của chúng là getView(). Ngoài ra chúng cũng sử dụng một phương thức khác là registerDataSetObserver. Tính năng này cũng được giới thiệu trong RecyclerView. Nhưng lớp RecyclerView.AdapterDataObserver được sử dụng cho nó. Nhưng điểm ưa thích của Listview là nó hỗ trợ 3 kiểu adapter :

ArrayAdapter
CursorAdapter
SimpleCursorAdapter

Trong khi RecyclerView adapter, có tất cả các chức năng mà ListView adapter đã trừ được xây dựng trong hỗ trợ cho DB cursor và ArrayLists, với việc sử dụng lớp RecyclerView.Adapter.

Source tham khảo : https://github.com/VenomVendor/RecyclerView