01/10/2018, 12:07

Hỏi về RecyclerView

mình đang học về recyclerView, mình đã load được data lên củng chỉnh dc animation, nhưng có 1 vần đề thế này là trong row_layout mình có ẩn đi 1 button . Mình có bắt sự kiện khi click vào row thì nó sẽ hiện cái button đó lên . Nhưng mình gặp 1 vấn đề là khi click vào nó hiện lên nhưng lúc mình vuốt xuống thì nó lại hiện ở row cúi và khi vuốt lên lại thì nó hiện về chỗ cũ , ai có kn có thể chia sẻ cho mình 1 chút để sủa không ? Thank All

Jack viết 14:17 ngày 01/10/2018

Trường hợp của bạn là do khi change item recyclerView sẽ dùng lại item trước,dẫn tới bị duplicate,mình có 2 cách như sau:

  1. set setIsRecyclable(false) cho view holder
    2)Tạo thêm 1 trường trong model để lưu lại trạng thái,như trường hợp trên ví dụ là isClick
    Sau đó trong hàm onBind thì bạn check điều kiện để ẩn/hiện button tương ứng,sau khi click thì change value isClick của model ngược lại
LOC viết 14:13 ngày 01/10/2018

mình t làm trường hợp 2 tạo ra 1 flag để lưu lại trạng thái ẩn hiện nhưng vẫn bị , mình có tim hiểu trên gg thì do thang onbind lúc mình vuốt xuống thì nó lầy từ vị trí 0 tới vị trí cúi mình cho là 10 rồi vuốt ngược lại thì cái vị trí cúi 10 đó nó lại cập nhập lại thành 0 nên mới bị

Jack viết 14:12 ngày 01/10/2018

nếu set flag trong model rồi set lại trong onbind thì sẽ không bị,có gì bạn đẩy code lên mình xem mới biết được

LOC viết 14:16 ngày 01/10/2018

mình sửa dc rồi , bạn có thể chỉ mình sử dụng sự kiên onclick của recyclerView không của recrclerView nhé chứ không phải của adapter, mình thử bắt sự kiện nhưng nó chỉ cho sử dụng onTouch . thank

Jack viết 14:11 ngày 01/10/2018

stackoverflow.com
CurtJRees

RecyclerView onClick

android, onclick, android-recyclerview, onclicklistener
asked by CurtJRees on 09:27PM - 28 Jun 14

đây có thể là 1 cách để set cho recyclerview, mà mình vẫn set onclick cho item trong adapter được mà,miễn là lấy được các item của viewholder là được thôi

LOC viết 14:13 ngày 01/10/2018

mình muốn setonclick cho recyclerview để thay đổi layout chình còn sử dụng itemclick thì chỉ thay đổi dc rowlayout thôi

Jack viết 14:10 ngày 01/10/2018

thay đổi layout chính thì cũng là sử dụng điều kiện click vào 1 phần của recyclerview để thay đổi thôi mà,bạn có thể truyền vào context hoặc 1 interface cho adapter,khi click item sẽ gọi lại callback hoặc check context để gọi thẳng hàm của context

LOC viết 14:18 ngày 01/10/2018

để mình thử xem sao thank

LOC viết 14:16 ngày 01/10/2018

thank bạn mình làm được rồi mọi khi vẫn làm như thế dc tự nhiên hôm nay nó lại báo lỗi là view null thì ra là mình ánh xạ sai cái tên view

Bài liên quan
0