-
11-23-2015, 07:00 AM #21Junior Member
- Ngày tham gia
- Mar 2014
- Bài viết
- 0
giờ ít dùng listview rồi, chuyển qua dùng recyclerview thôi cho hịn
-
03-03-2016, 07:00 AM #22Junior Member
- Ngày tham gia
- Jan 2015
- Bài viết
- 0
@chủ thớt: vd trên sai nặng do bạn chưa hiểu rõ về viewholder. mình sẽ nói rõ hơn. bạn xem nếu thấy ổn thì sửa bài cho các bạn sau hiểu hơn vấn đề nhé.
1. mục đích tại sao lại cần viewholder:
để listview (và gridview...) mượt hơn khi scroll.
mỗi khi vẽ 1 dòng trên listview, android sdk sẽ gọi vào hàm getview để lấy view hiển thị.
lập trình view có thể không dùng viewholder mà lúc nào cũng inflate view mới, lúc nào cũng findviewbyid. code vẫn chạy nhưng list sẽ giật. lý do là quá trình inflate, findviewbyid rất tốn tài nguyên. để thấy mượt, listview phải vẽ được 60 fps --> mỗi dòng cần xử lý dưới 1x ms. tốt nhất là 4-5ms. do thế, nếu bạn xử lý nặng trong hàm getview (chạy trong ui thread) thì listview sẽ bị giật.
xử lý nặng như: inflate, findviewbyid, query csdl...
dó thế, google để xuất là cần xử lý để bỏ qua bước inflate, findviewbyid nếu có thể.
cụ thể thì giống như code của bạn.
2. cái sai của bạn:
do các view sẽ được dùng lại, nên mỗi lần hiển thị trên 1 dòng, bạn phải xét lại thông tin cho nó. chính là đoạn bạn settext.
tuy thế, setonclicklistener thì bạn lại không làm thế. nếu bạn có nhu cầu như trên thì cần setonclicklistener cạnh đoạn bạn settext thay vì tại lúc tạo viewholder.
nếu thế, các view sau này sẽ dùng lại onclicklistener của các view đầu listview, và xử lý sai.
bạn có thể test đơn giản bằng cách: tăng số item lên khoảng 20 phần tử --> bạn cuộn xuống dưới --> click vào nút của item cuối cùng --> bạn sẽ thấy nội dung toast sai.
-
03-03-2016, 07:00 AM #23Junior Member
- Ngày tham gia
- Apr 2016
- Bài viết
- 0
Gửi bởi thien phu
Giá bốt bảo vệ là một yếu tố quan trọng trong việc thiết lập hệ thống an ninh hiệu quả. Trong bài viết này, chúng ta sẽ tìm hiểu về tầm quan trọng của giá bốt bảo vệ và các yếu tố ảnh hưởng đến giá...
Giá Bốt Bảo Vệ: Quan Trọng Trong Hệ Thống An Ninh