RecyclerView (Kotlin Beginner Example)

Sdílet
Vložit
  • čas přidán 18. 08. 2024
  • High quality Android programming courses: codingwithmitc...
    In this video I show you how to setup a RecyclerView on Android using Kotlin.
    The RecyclerView items display an image and text.
    In this android recyclerview beginner example I use the following external libraries:
    - Glide to display the images from the internet
    - CardView for showing CardViews in the RecyclerView
    - RecyclerView (obviously for the recyclerview)
    This is the perfect example if you're a complete beginner to android development or you're looking to get started with Kotlin. I build the RecyclerView Adapter from scratch and show you how to build:
    - A custom object class to model the data
    - A custom list-item layout for the RecyclerView list items
    - A custom RecyclerView Adapter
    All the code is free and available on Github.
    Instagram: / codingwithmitch
    Code: github.com/mit...
    Images: github.com/mit...
  • Věda a technologie

Komentáře • 185

  • @muhammadusama4437
    @muhammadusama4437 Před 5 lety +5

    Select recyclerView item and take information from that to next activity/fragments. Also material design selection. This tutorial is awesome.

    • @codingwithmitch
      @codingwithmitch  Před 5 lety +2

      I'll do an onclicklistener one next and nav to a new activity

  • @DavidNitzscheBell
    @DavidNitzscheBell Před 4 lety +9

    6:27 you discuss for about a full minute why your `image` field is declared as a `String`. This is a case where the naming of variables is very important and useful. Call the field `imageURL`; this makes it clear to all, even deep in the middle of some chunk of code, that the variable points to an image somewhere and is not actually the (binary) image file.

  • @gunther982
    @gunther982 Před 3 lety +2

    The best android tutorial I have come across. So simple and understandable, whilst dropping wisdom and real-world examples. Love it

  • @brianssendagire262
    @brianssendagire262 Před 4 lety +2

    Thank you for your selfless share of useful knowledge. As a mobile app developer, you taught me Django web development with the Blog Course and I will without a doubt continue to pay for the online courses you offer. Let's support Mitch folks, pay for his online courses, he's an inspiration and a great guy.

  • @IsZprAsGaminG
    @IsZprAsGaminG Před 5 lety +4

    You have become my master now. Among all the tutorials on CZcams, your videos are the one that clearly understandable

  • @merttatli9455
    @merttatli9455 Před 3 lety +7

    @CodingWithMitch Thank you for the content, i was tring to write the adapter code myself but i realized that when I implement BlogViewHolder i had an issue with itemView, it cannot see the layout properties. Is there any solution for it?

    • @merttatli9455
      @merttatli9455 Před 3 lety +3

      I find out that Kotlin Android Extensions is deprecated. That's why if you want to use this code you need to change it to 'kotlin-parcelize'

    • @Qwertie64982
      @Qwertie64982 Před 2 lety +1

      If you want to avoid dependencies on either of these, you could probably just do something like val blogTitle: TextView = itemView.findViewById(R.id.blog_title)

  • @codinginflow
    @codinginflow Před 5 lety +21

    Thank you I always wanted to know how that works

  • @danielwatts3718
    @danielwatts3718 Před 4 lety

    These videos are so good. The explanations of why pieces need to be put together is extremely helpful and rare to find on youtube.

  • @Ageleo
    @Ageleo Před 5 lety +8

    Thank you! Can't wait for more Kotlin tutorials

  • @mohammadatif2774
    @mohammadatif2774 Před 3 lety +1

    wow clean and clear explanation

  • @leonespartano
    @leonespartano Před 4 lety +1

    Thanks Mitch. I'm really thankful for all your tutorials. Your form of explaining these complicated topics is wonderful.

  • @JoshMartin
    @JoshMartin Před 3 lety +8

    Why is there no usage of "findViewById" to reference the elements in the layout file? I keep getting errors of "Unresolved reference" in the BlogViewHolder class, but if I change them to "val blog_image = itemView.findViewById(R.id.blog_image)" then I stop receiving errors.

  • @bogdan4760
    @bogdan4760 Před 4 lety

    That's one of the most COOL tutorials I have ever seen in my life. You are awesome

  • @iftak01
    @iftak01 Před 3 lety +2

    Nice vid. Note: Synthetic view were used there in fun bind in ViewHolder Class...but its deprecated now.
    Good explanation tho

  • @SK-fq2yz
    @SK-fq2yz Před 5 lety +46

    Please do Recycle view clicks in Kotlin

    • @Milan-iw2kr
      @Milan-iw2kr Před 4 lety +1

      Did he done it? I can`t find it :(

    • @agoldfish9239
      @agoldfish9239 Před 4 lety +4

      Sorry for the late reply but to add an onClick just add this code right below 22:36 in the video on line 37
      init {
      itemView.setOnClickListener {
      val position:Int = adapterPosition
      Toast.makeText(itemView.context,"You clicked on item # ${position + 1}", Toast.LENGTH_SHORT).show()
      }
      }
      Also if u want to add a little animation when you click each tile in your layout_blog_list_item.xml
      add these three tags to where you want it to glow
      android:clickable="true"
      android:focusable="true"
      android:foreground="?selectableItemBackground"

  • @baijusharma6027
    @baijusharma6027 Před 5 lety +1

    Superb l was awaiting for these kind of tutorials on this channel. Keep going. Kotlin a new journey begins for Android developer.

  • @srdjansmulja5375
    @srdjansmulja5375 Před 4 lety

    HUGE HUGE THANK YOU! Really good tutorial, maybe the best one i saw from Kotlin tutorials. Keep up the good work mate!

    • @codingwithmitch
      @codingwithmitch  Před 4 lety +1

      All I ask is that you stay away from that Coding In Flow guy.

  • @raypaxman9600
    @raypaxman9600 Před 2 lety +2

    For some reason, I can't get the adapter to work. When making the "val blog_image = itemView.blog_image" aswell as the others, they aren't connecting to the other file where blog_image, blog_title, and blog_author are. so = itemView.blog_image becomes an error.

  • @ziasheikh2863
    @ziasheikh2863 Před 2 lety

    This video on recyclerview is superb. Please also make a video on recyclerview with endless scroll listener in kotlin. There is no quality stuff on this topic as i have checked many videos. Thank you.

  • @hoonjung2143
    @hoonjung2143 Před 5 lety +2

    Thank you! Helped me a lot :)
    Looking forward to more Kotlin! :D

  • @avinashbadaramoni4320
    @avinashbadaramoni4320 Před 3 lety +1

    Whenever you’re starting a beginner video please start from scratch
    You don’t need to save time if any experts are watching they will go and skip
    Please try to start from scratch
    Thank you

  • @RomskieL
    @RomskieL Před 3 lety

    Thanks alot! You have explained so well the sequence on how to use the RecyclerView.

  • @davidscammell9823
    @davidscammell9823 Před 4 lety +1

    Excellent tutorial - you and your friend over at 'Coding in Flow' are my go to guys for proper tutorials, with the explanations where needed - thank you for the brilliant content!.. Now, just need to hook this up to my Firestore Database, through my Repository and ViewModel and I'll be getting somewhere!! (ahem!) :)
    +1 for adding onClick to this RecyclerView!

  • @armandosantos5552
    @armandosantos5552 Před 5 lety +1

    Nice Tutorial, I want to learn more about Kotlin with your tutorials

  • @sudhir1274
    @sudhir1274 Před 4 lety

    Very good RecyclerView Tutorial. Thank you for sharing.

  • @ahmedyosri4827
    @ahmedyosri4827 Před rokem

    LOVE THIS PLEASE MAKE MORE

  • @eternussolutions1084
    @eternussolutions1084 Před 3 lety

    Nice Video Mitch!

  • @pragistyomachmud4062
    @pragistyomachmud4062 Před 5 lety +6

    Just like the thumbnail: 👍

  • @raypaxman9600
    @raypaxman9600 Před 2 lety +1

    Getting errors from list and ArrayList() both as errors. Edit: so I changed them to MutableList and arrayListOf() for now. Haven't finished the example, so I don't know if it'll mess it up.

  • @nexgen.graphics
    @nexgen.graphics Před 4 lety

    Highly informative and valuable. And thank you for the extras .apply and itemdecoration class :).

  • @JohnDoe-cp3co
    @JohnDoe-cp3co Před 4 lety +2

    You saved my nerves, thanks bud

  • @Nikox102
    @Nikox102 Před 3 lety

    I love you dude, you helped me so much! Thanks

  • @muhammedrabee8234
    @muhammedrabee8234 Před 3 lety

    Great job man 👏👏 Keep up

  • @khaxbiker
    @khaxbiker Před 4 lety

    Learning a lot from your videos, Thanks one more time!

  • @dcsister6057
    @dcsister6057 Před 2 lety

    thank you ,learn so much from you

  • @prasannadeshpande4435
    @prasannadeshpande4435 Před 4 lety

    Loved the tutorial. It was very helpful. Thank you.

  • @quewealawea
    @quewealawea Před 3 lety

    Awesome video! you helped me a lot!! you have a new subscriber :D

  • @mohammadatif2774
    @mohammadatif2774 Před 3 lety

    Once again thank you very much ... this is what i was looking for.

  • @gilsonjuniorpro
    @gilsonjuniorpro Před 5 lety +2

    Great video! So, I am facing some problems using MediatorLiveData, if you have time, would be great see a video from you about this, thank you my friend

  • @codinginflow
    @codinginflow Před 4 lety +10

    the "image pointer" almost looks like a URL

    • @hatty101
      @hatty101 Před 4 lety

      what are you doing here? lol

    • @codinginflow
      @codinginflow Před 4 lety +1

      @@hatty101 setting things straight

    • @hatty101
      @hatty101 Před 4 lety

      @@codinginflow ok, make a tutorial about recyclerview and jsoup on kotlin please, i cant find a new one.

  • @dbtechprojects2392
    @dbtechprojects2392 Před 3 lety

    Thanks for the great video, really helpful for people new to android dev

  • @antongeraskin159
    @antongeraskin159 Před 2 lety

    great tutorial, helped me a lot

  • @PhilBrighton4
    @PhilBrighton4 Před 4 lety

    This was very well explained, thanks. I want to create a recyclerview that uses two separate lists / types of data where one set of data follows the other on the same screen. I can combine them into a single list containing the two different data types, but I have been struggling to convert them to display in the two different views . A video covering this would be a godsend to me :)

  • @JosieInCase
    @JosieInCase Před 4 lety +1

    Really good video, helped me a lot!!
    If you could make a video about RecyclerView OnClickListener for Kotlin, that would be awesome!!

  • @louiechung4790
    @louiechung4790 Před 4 lety +1

    Very good tutorial. Thanks

  • @rushidesai2836
    @rushidesai2836 Před 4 lety

    Great stuff Mitch!!

  • @VivekYadav-ds8oz
    @VivekYadav-ds8oz Před 4 lety +1

    Can't we use lambda function to avoid creating the new Decorator class by using the lambda function directly in addItemDecoration() ?

  • @omidmirrajaee8054
    @omidmirrajaee8054 Před 4 lety

    ty mitch for tutorial - and i have 2 question
    1 - why use topSpacingItemDecoration? Why not use the xml layer margin
    2- The difference between using this code
    class BlogViewHolder constructor(itemView: View) : RecyclerView.ViewHolder(itemView)
    with
    class BlogViewHolder (val itemView: View) : RecyclerView.ViewHolder(view)

  • @somdatatechnology233
    @somdatatechnology233 Před 3 lety

    thanks mitch for your amazing tutorial, how to connect with api (volley) with this app, could you help me

  • @nidhijoshi2939
    @nidhijoshi2939 Před 2 lety +1

    23:42. I am getting error in creating requestOptions object. its saying "Cannot create instance of an abstract class". Can anyone help me out with it.

  • @eugeniomeza2886
    @eugeniomeza2886 Před 4 lety

    Thank you very much for the tutorial. Keep up the good work.

  • @user-uj9on1hr5d
    @user-uj9on1hr5d Před 4 lety

    Nice explanation for Beginner like me Thank u !!

  • @aihoneyai1197
    @aihoneyai1197 Před 3 lety +1

    i have this problem with class viewholder (in my case is SalesViewHolder),
    it can't detect the id of the component of layout file. eg. val salesName = itemView.nameRV
    nameRV is marked red, it says unresolved refernce

    • @priyamvashi2187
      @priyamvashi2187 Před 3 lety +1

      val blog_image = itemView.findViewById(R.id.blog_image)

  • @VishalSingh-eb4zc
    @VishalSingh-eb4zc Před 5 lety +1

    Thank you! making kotlin video mitch Bhai

  • @juliodiamond
    @juliodiamond Před 4 lety +1

    Thank you for tutorial. I wait for the next tutorial
    i'm from Indonesian

    • @ardi7095
      @ardi7095 Před 4 lety

      jogja hadir..
      kejarlah ilmu sampai youtube hehee

  • @vahidhoseini1723
    @vahidhoseini1723 Před 3 lety

    great, good job mitch.

  • @goobar
    @goobar Před 5 lety +2

    shirt game is strong in this intro 😀

  • @mantiriadeputra1188
    @mantiriadeputra1188 Před 3 lety +1

    hi Mitch nice tutorial. my recycle view can load the data perfectly , but I don't no why I'm getting this error "E/RecyclerView: No adapter attached; skipping layout". Please Help. Thank you

    • @priyamvashi2187
      @priyamvashi2187 Před 3 lety

      val blog_image = itemView.findViewById(R.id.blog_image)

  • @vishalvaidya617
    @vishalvaidya617 Před 3 lety

    Thank you! this really helped me a lot!

  • @samha1513
    @samha1513 Před 5 lety +1

    Great work as always 👌

  • @b.k4142
    @b.k4142 Před 5 lety +1

    Good idea!! i m new kotlin fun!!

  • @from2ureview251
    @from2ureview251 Před 4 lety

    Thanks dear Mitch

  • @leolimoncito6564
    @leolimoncito6564 Před 4 lety

    Thanks, master, this video is really useful.

  • @RajeshSamson
    @RajeshSamson Před 5 lety +1

    Great Video!.......... thank you

  • @MalamIbnMalam
    @MalamIbnMalam Před 2 lety

    One question, in your DataSource class, why not simply just do object DataSource() as opposed to class DataSource then declare the nested companion object? Thanks!

  • @prajnadeep
    @prajnadeep Před 4 lety

    This was helpful. Thank You!

  • @namluongxuan2940
    @namluongxuan2940 Před 4 lety

    Thank you sir. That it Great !!

  • @versaticon
    @versaticon Před 3 lety

    Thanks for sharing your knowlegde.

  • @jayantjadhav9566
    @jayantjadhav9566 Před 3 lety +2

    21:23 blog_image gives error as no reference found

    • @priyamvashi2187
      @priyamvashi2187 Před 3 lety +1

      val blog_image = itemView.findViewById(R.id.blog_image)

  • @shivamkumarjha3302
    @shivamkumarjha3302 Před 4 lety

    Hey Mitch!
    Just added the margin in layout file and spacing problem solved without spacing item decorator in recyclerview. Is there any other use of spacing item decorator?
    Great Tutorial, as usual!! Thanks

  • @shihabmohammad6157
    @shihabmohammad6157 Před 5 lety

    @codingWitMitch it would be awesome if you post some thing that show how we can wire different views like recycler-views and recycler-view list menu with bottom navigationbar/ or inside fragments

  • @byronjosafatmartinelli7373

    Great Tutorials! Just one question. How to make it not like infinite loops? Just want some simple Recycler view.

  • @SaherAlSous-welcomes-you

    I got this problem:
    Classifier 'LayoutManager' does not have a companion object, and thus must be initialized here
    --> RecyclerView.LayoutManager = LinearLayoutManager(this@MainActivity)

  • @mostafahelalyDev
    @mostafahelalyDev Před 4 lety

    I have a small problem the item click listener code I don't know where should l put it and I want if I clicked on the item number 1 I want the app intent me to another layout and so on on the other items and I don't know how to lead to the index to do that I hope you help me in this problem

  • @erlanbulanbekov4703
    @erlanbulanbekov4703 Před 3 lety

    ItemView.context will return applicationContext? or Activity context?

  • @thekralj9600
    @thekralj9600 Před 3 lety +2

    how the hell you don't need to use findViewById anywhere?

    • @sb-cr4wu
      @sb-cr4wu Před 2 lety

      czcams.com/video/afl_i6uvvU0/video.html

  • @ernestsburmistris9500
    @ernestsburmistris9500 Před 4 lety +1

    It doesn't work for me😟. It just shows a blank page.

  • @terjemah_alquran
    @terjemah_alquran Před 4 lety +1

    thank you this, help me alot

  • @ziasheikh2863
    @ziasheikh2863 Před 2 lety

    Hello, i hope you're doing good. Thanks for such kind of great videos!!!. Can we control card elevation behaviour? I mean by using card elevation we got a shadow but it is very sharp shadow... Can we control it's sharpness?

    • @shykatislam5581
      @shykatislam5581 Před 2 lety

      declare the cornerRadius ... i hope it helps
      Thank You

  • @rahulattili3039
    @rahulattili3039 Před 4 lety

    Thanks and Subscribed !

  • @yuktasood853
    @yuktasood853 Před 4 lety

    Hi! Thanks for the great video! I've implemented the recyclerView but I can only see the default images. Can you help?

  • @eskwelaaco5753
    @eskwelaaco5753 Před 3 lety

    Thank you for this!

  • @jeanit3378
    @jeanit3378 Před 4 lety

    Hola, muy buen video, estoy aprendiendo kotlin y este tutorial ha sido el que mas me ha servidor :),,,, tengo una consulta por cierto,,, estuve haciendo unos cambios en el data source para poder obtener la data desde internet y cuando lo ejecuto no pasa nada,, sin embargo cuando le pongo un delay de 2 segundos carga perfecto con la info de internet,, supongo que el problema va por el tema sincrono y asincrono,, entonces,,,sabes alguna forma de hacerlo asincrono para que cargue en background y luego presente los resultados?,, o por ultimo bloquear la app hasta que espere el resultado del GET.

  • @eagleeye2316
    @eagleeye2316 Před 4 lety

    good day, i am getting this error, Task :app:transformDexArchiveWithExternalLibsDexMergerForDebug FAILED
    what should i do?please help

  • @TBrianOnline
    @TBrianOnline Před 4 lety

    Thank for the tutorial! How can I make the list from my own assets?

  • @stephanieha1413
    @stephanieha1413 Před 4 lety

    Do you teach how to click inside of the card view?? Really need it xD

  • @TheRajmoney
    @TheRajmoney Před 3 lety

    please do video with different views using kotlin

  • @shaydstv8542
    @shaydstv8542 Před 4 lety

    Hi Mitch, first thank you for your help through all your videos !
    Second, could you make a course about Dual Panel fragments in landscape ?
    - RecyclerView in left fragment
    - ItemDetail in right fragement
    So far I didn't find out how to pass data from my recyclerview item to my fragment detail...
    Thanks :)

  • @ryanchildress2386
    @ryanchildress2386 Před 2 lety

    Newbie Question? Why cant I import anything from codingwithmitch?

  • @blessonthomas4875
    @blessonthomas4875 Před 3 lety

    Please can you do video in different view type

  • @Alegoria7
    @Alegoria7 Před 4 lety

    I have problems when i have to put the (parent.context), it gives an error, how can i fix it?

  • @suhaskadu8595
    @suhaskadu8595 Před 3 lety

    Great Video

  • @davidgreer1324
    @davidgreer1324 Před 4 lety

    How would the code change if the image was in the drawable folder?

  • @DavidNitzscheBell
    @DavidNitzscheBell Před 4 lety +1

    I think it would be more descriptive to call your `image` variable, `imageURL`.

  • @mskatanani
    @mskatanani Před 5 lety

    Would you please clarify the differences between using the generic view holder and the customized one in adapter

    • @codingwithmitch
      @codingwithmitch  Před 5 lety

      the custom one contains all the fields from the custom layout we built

  • @yasserelgammal3696
    @yasserelgammal3696 Před 5 lety

    20:37
    you can simply reach views via:
    holder.view.[views name] = [ modelName.username ] for example

  • @harishraja1936
    @harishraja1936 Před 4 lety

    setcall backs in list ????

  • @pumpmanagementsoftware
    @pumpmanagementsoftware Před 5 lety +1

    Hey how is b4a for android development

  • @calvinusiri9498
    @calvinusiri9498 Před 5 lety

    Hey Mitch, thanks for the video. I know the example above is for beginners, but how would you solve for a situation where you are loading images async with glide and scroll up/down really quickly with your recyclerview. Because the views are being recycled, and Glide is async, you'll have the incorrect image being shown on your Imageview for a moment before glide catches up with correct image. Do you know of a way to handle this without clearing Glide or setImageBitmap(null).

  • @tohaassegaf8695
    @tohaassegaf8695 Před 4 lety

    my picture doesn't appear, do you know what the problem is?