https://www.codeofaninja.com/2013/09/android-viewholder-pattern-example.html

Đại để là thế này.
Xét đến thằng Adapter, với function getView, hàm này sẽ được gọi mỗi khi item được visible lên trên màn hình!
Với những lần đầu thì không sao, nhưng những lần sau, các thao tác lại lặp lại toàn bộ, đặc biệt phần chiếm nhiều thời gian nhất là phần inflate cái view mới và findView lại!
Nếu 1 list cực dài thì sẽ tốn rất nhiều time và memory!
Để thực hiện kỹ thuật này ta cần nắm 2 yếu tố!

– Chú ý với tham số convertView: cái này = null khi lần đầu tiên item hiển thị lên màn hình, và != null khi đó là lần thứ 2 item đó hiển thị lên màn hình!

– Mỗi view có thuộc tính tag, là thông tin mà nó có thể lưu vào đó thì phải!

Kết hợp 2 điều này ta sử dụng để tạo ViewHolder cho mỗi view lưu các thuộc tính của nó lại, khi nào lặp lại lần 2 thì ta có thể sử dụng lại nó mà không phải làm các thao tác như lần đầu tiên của nó.

Advertisements