16.1 Androidstudio kotlin - RecyclerView kotlin simple explanation - tự học lập trình

Поделиться
HTML-код
  • Опубликовано: 23 ноя 2024
  • ❤️ Donate ủng hộ phát triển kênh| Momo: 0975812064
    Số TK : 0975812064 Ngân hàng TPBank - Chủ tài khoản: Phạm Trung Kiên
    ❤️ ✅ Nếu thấy video hay và bổ ích hãy like và chia sẻ để mình biết
    Các bạn đang quan tâm nhiều đến chủ đề nào và phát triển tiếp cho nội dung đăng sau này
    ✅ Đăng ký kênh để không bỏ lỡ video: dangky.tuhoc.cc
    Playlist Video :
    ✅Lập trình Android với kotlin : kotlin.tuhoc.cc/
    ✅ selenium C# : selenium.tuhoc.cc/
    ✅ ffmpeg cut, ghép video cực nhanh : ffmpeg.tuhoc.cc/
    ✅C# cơ bản cho người mới: csharp.tuhoc.cc/
    ✅ Python căn bản cho người mới: python.tuhoc.cc/
    ✅ pygame lập trình game cho người mới : pygame.tuhoc.cc/
    ✅ opencv python : opencv.tuhoc.cc/
    ✅ clip động lực để học tập : dongluc.tuhoc.cc/
    Nhóm thảo luận:
    ✅ Facebook : fb.tuhoc.cc/
    ✅ Toàn bộ tài liệu silde bài giảng post tại disord : dc.tuhoc.cc/
    #kotlin #tuhoc.cc #androidtutorial

Комментарии • 35

  • @tringuyen3148
    @tringuyen3148 2 года назад +2

    Cảm ơn bài giảng của Thầy.

    •  2 года назад

      🥰

  • @nguyenson227
    @nguyenson227 Год назад +8

    dùng private lateinit var binding: LayoutItemBinding trong class RvAdapter
    trong inner thì mình thay cái itemView: View bằng cái binding: LayoutItemBinding cái itemView tiếp theo thì bằng binding.root
    còn trong cái onCreateViewHolder thì thay bằng
    val view = LayoutInflater.from(parent.context)
    binding = LayoutItemBinding.inflate(view,parent,false)
    return PhimViewHolder(binding)
    rồi cái sau dùng binding bình thường là được
    mình mới thử thì nó cẫn chạy bình thường không bt có sai j không

    • @nguyeninhngocbao544
      @nguyeninhngocbao544 Год назад +3

      sao cái layoutitembinding của mình lại lỗi nhỉ

    • @hunganroiy1553
      @hunganroiy1553 3 месяца назад

      @@nguyeninhngocbao544 do cách đặt tên file

  • @daoporo102
    @daoporo102 Год назад +1

    haizz thầy update lại bài này đi ạ tại cái kotlin-android-extensions chuyển qua viewBinding r nó rắc rối quá ko gọi dc ID img,txttenPhim,txtMieuta bên RVAdapter mà binding để bên mainActivity r

    •  Год назад +2

      Bí quae thì Dùng lại find view by id trước đi e. Nó thay đổi chóng mặt. Nên mình phải mò cách thích nghi. Rảnh a mới làm lại dc
      Vì làm 1 video khá nhiều công sức và thời gian. Nên a chưa thể update đc ngay. 🥵

    • @daoporo102
      @daoporo102 Год назад

      @ học lập trình là nó update liên tục nên mình phải thích nghi dko thầy

    •  Год назад +1

      @@daoporo102 uh e. Nó vẫn đang hoàn thiện từng ngày mà. 😅

    • @daoporo102
      @daoporo102 Год назад

      @ class RVAdapter e không sử dụng dc findViewByID thầy ưi

    • @ingoodhealth613
      @ingoodhealth613 Год назад +1

      @@daoporo102 có thể copy toàn bộ code của classs RvAdapter rồi bỏ vô ChatGPT, kêu nó modify code ở trên thành code mới dùng ViewBinding là nó làm một lèo cho luôn. Đọc hiểu cách nó dùng và copy vô lại RvAdapter class là được.

  • @quanphan7337
    @quanphan7337 Год назад

    Anh ơi anh giải thích giúp em đoạn inner class với được không ạ, em không hiểu tại sao ở đó lại sử dụng inner class

    •  Год назад +1

      Chào em! Inner class trong Kotlin là một lớp được khai báo bên trong một lớp khác. Nó có thể truy cập vào các thành viên (properties và methods) của lớp bên ngoài.
      Việc sử dụng inner class trong Kotlin mang lại một số lợi ích sau:
      Truy cập dễ dàng: Inner class có thể truy cập vào tất cả các thành viên của lớp bên ngoài (bao gồm cả các thành viên private). Điều này cho phép inner class thực hiện các tác vụ liên quan một cách thuận tiện.
      Kết nối mật thiết: Inner class có thể truy cập trực tiếp các thành viên của lớp bên ngoài mà không cần tạo đối tượng của lớp bên ngoài. Điều này tạo ra một mối quan hệ mật thiết giữa inner class và lớp bên ngoài.
      Phạm vi thụt lề (nesting): Inner class có thể được khai báo trong một phương thức, trong khi vẫn có thể truy cập các biến cục bộ và tham số của phương thức đó. Điều này giúp giảm bớt việc tạo ra một lớp riêng biệt nếu chỉ cần sử dụng trong một phạm vi nhỏ hơn.

    • @quanphan7337
      @quanphan7337 Год назад

      em cảm ơn anh ạ
      '@

  • @hunganroiy1553
    @hunganroiy1553 3 месяца назад

    Bản mới sài binding nên mấy cái này ko còn đúng nữa ạ :((

    • @tinvit247
      @tinvit247 2 месяца назад

      khác gì nhau đâu cái binding cx chỉ là giúp ta đỡ khai báo biến thôi

  • @quanphan7337
    @quanphan7337 Год назад

    sao không để 1 thiết bị api 21 xuyên xuốt khóa đi anh, cứ đổi tùm lum vậy máy yếu như em xóa có thể đủ dung lượng đc anh. 1 máy đã 15GB rồi

    • @LaHuuMan
      @LaHuuMan Год назад +1

      tuy ban thoi xai 1 may ao dc rui can gi tao nhieu may ao

    • @phuongduy688
      @phuongduy688 Год назад

      bạn để API21 chạy có lỗi hay sao?

    • @phuongduy688
      @phuongduy688 Год назад

      học có chút khó khăn mà sao than quá

    • @quanphan7337
      @quanphan7337 Год назад

      thái độ cái gì và chỗ nào thái độ không biết ơn, đã mù còn không biết đọc@@tranngockhanh437

    • @quanphan7337
      @quanphan7337 Год назад

      @@phuongduy688 thì bạn có coi hết video đâu mà biết nó có lỗi hay không lỗi, bạn nên coi lại video cho rõ rồi hãy comment thiểu năng. Còn khó khăn mà than như bạn nói thì nó cái kiểu là :" ôi sao khó quá anh ơi, em ko làm dc đâu" thì mới gọi là than. CÒn cái máy của tôi yếu thì tôi chỉ nói là sao không để api21 thôi chứ cái đấy là than à. Tay đi trước não không hiểu rõ từ "than" là gì à? à quên bạn làm gì có não

  • @quanphan7337
    @quanphan7337 Год назад

    mà tại sao lại sử dụng innerClass hả anh, em vẫn chưa hiểu lắm

    • @LaHuuMan
      @LaHuuMan Год назад +1

      cai do la cu phap cua rcv r ban bat buoc phai tao nhu v

    • @ingoodhealth613
      @ingoodhealth613 Год назад +3

      bạn để ý sẽ thấy trong class RvAdapter bạn extend từ RecyclerView và bắt buộc phải override lại cái onCreateViewHolder để sử dụng, và cái onCreateViewHolder này nó lại trả về return một class RecyclerView.ViewHolder, vì vậy bạn muốn đọc được cái return này thì bạn phải tạo một cái class kế thừa cái class return, cụ thể là PhimViewHolder:RecyclerView.ViewHolder.
      và để in dữ liệu ra được màn hình thì bạn lại phải override fun onBindViewHolder, mà cái hàm này thì dùng cái return ở trên để gán giá trị từ ds dữ liệu vào cái bảng RecyclerView. Nên bạn buộc phải tạo cái inner class đó để có cái cho onBindViewHolder dùng trong parameter.
      Tóm lại RecyclerView là một interface, bạn muốn dùng thì bạn phải Override các function, mà các function này lại dùng và trả về một class ViewHolder, vì vậy bạn phải tạo một inner class kế thừa thằng ViewHolder này thì mới dùng được cấu trúc RecyclerView.
      Nó hơi vòng vòng tí, cơ mà bạn nắm vững kế thừa và interface thì đọc code sẽ hiểu.

    • @ingoodhealth613
      @ingoodhealth613 Год назад +4

      Và lý do tại sao dùng innter thì bởi vì như vậy cái class mới PhimViewHolder:RecyclerView.ViewHolder sẽ sử dụng được các biến của class cha RvAdapter, lẫn kế thừa RecyclerView.ViewHolder luôn, tiện cả đôi đường. Nếu khai bên ngoài thì không sử dụng được biến của RvAdapter class

    • @quanphan7337
      @quanphan7337 Год назад

      cảm ơn bạn rất nhiều
      @@ingoodhealth613

    • @quanphan7337
      @quanphan7337 Год назад

      bạn giải thích có tâm quá. Cảm ơn bạn nhé
      @@ingoodhealth613