Trang 3 của 3 Đầu tiênĐầu tiên 123
Kết quả 21 đến 23 của 23
  1. #21
    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

  2. #22
    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.

  3. #23
    Ngày tham gia
    Apr 2016
    Bài viết
    0
    Trích dẫn Gửi bởi thien phu
    bài này lỗi trầm trọng. nên cân nhắc trước khi xem.

    thử cho cái mảng khoảng 20 phần tử trở lên sẽ thấy.
    bạn thấy sai thì nói luôn để chủ thread sửa cho thread chuẩn hơn. bóng gió, ra vẻ mà làm gì.

Trang 3 của 3 Đầu tiênĐầu tiên 123

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •