How to Make a CRUD Todo List App - Full MVVM Beginner Guide - Android Studio Tutorial

Поділитися
Вставка
  • Опубліковано 28 гру 2021
  • MVVM is the architecture for Android. It's recommended by Google and I use it in all of my apps, no matter how big they are.
    This course will cover everything you need to know and give you a great template you can use to build your very own well-scaling apps using the MVVM architecture. And all that up-to-date, so you're ready to build your favorite apps with Jetpack Compose in 2022.
    MVVM in 100 seconds:
    • MVVM in 100 Seconds
    Kotlin Playlist:
    • KOTLIN NEWBIE TO PRO
    Jetpack Compose Playlist:
    • Jetpack Compose
    ⭐ Get certificates for your future job
    ⭐ Save countless hours of time
    ⭐ 100% money back guarantee for 30 days
    ⭐ Become a professional Android developer now:
    pl-coding.com/premium-courses...
    💻 Let me personally review your code and provide individual feedback, so it won't backfire and cost you a fortune in future:
    elopage.com/s/philipplackner/...
    Subscribe to my FREE newsletter for regular Android, Kotlin & Architecture advice!
    pl-coding.com/newsletter
    Join this channel to get access to perks:
    / @philipplackner
    Get the source code for this video here:
    github.com/philipplackner/MVV...
    Regular live codings on Twitch:
    / philipplackner
    Join my Discord server:
    / discord
    Regular programming advice on my Instagram page: / _philipplackner_
    Checkout my GitHub: github.com/philipplackner
    You like my free content? Here you can buy me a coffee:
    www.buymeacoffee.com/philippl...

КОМЕНТАРІ • 190

  • @hubinsord9009
    @hubinsord9009 2 роки тому +107

    8:08 DAO
    12:56 DB
    14:30 Repository purpose
    15:50 Repository - why should you depend on abstraction
    17:20 Repository implementation
    19:10 DI
    19:27 what is DI in short
    23:14 @Installin annotation meaning
    27:18 ViewModel
    28:17 VM purpose
    33:26 SharedFlow and Channels
    35:15 Channels
    1:07:02 SavedStateHandle

    • @nishant_thite
      @nishant_thite 2 роки тому +2

      1:29:37 Recap

    • @abedalraoufzeidan1461
      @abedalraoufzeidan1461 2 роки тому

      iam i the only one that dosent understand iam just writing

    • @abedalraoufzeidan1461
      @abedalraoufzeidan1461 2 роки тому +1

      can anyone suggest any other way to learn mvvm

    • @TheMcChasey
      @TheMcChasey Рік тому +2

      @@abedalraoufzeidan1461 I look at a clip in the video and then try to write it my own, also writing your own projects

    • @xhivo97
      @xhivo97 Рік тому +1

      ​@@abedalraoufzeidan1461 What helped me is taking a few days and implementing a very simple in-memory database (just an interface + class implementation). When you do that you can mess around with the database where you can add to it, remove from it (these are functions that just add/remove from a mutable list stored in the class that implements the interface mentioned before). Then you can make a simple to-do list app without using flows, view models, dependency injection and a room database. What you'll quickly notice is that while you can make an app in such a way, actually scaling it or working with it in general after the initial prototype quickly becomes messy.
      After you do all you will gain some very valuable insights on why MVVM and what problems it solves.
      Personally, I am here because I took that approach in the prototyping phase of my app and failed miserably in integrating view models to my database interface. It's doable but a lot of my problems seem to be magically solved by MVVM, I love it.

  • @anshumandhal
    @anshumandhal 2 роки тому +54

    Gotta give it to this guy! Keeps pushing out these long format, well researched and really helpful videos consistently. Thanks a lot for these.

  • @francismwangi9752
    @francismwangi9752 Рік тому +2

    Hello Phillip.Your ability to simplify complex concepts and explain them in a clear and concise manner is truly commendable. Your step-by-step approach to teaching makes it seem easy and achievable, even for beginners.
    Looking forward to learning more about Firebase, CRUD operations, and authentication. If you have time for a UA-cam tutorial on these topics, I'd love to watch it. Thanks for sharing your expertise.

  • @slobicak
    @slobicak 2 роки тому +1

    Great video, thanks for taking your time to put all this together.
    Cheers from Belgrade!

  • @user-fl3xc7un6e
    @user-fl3xc7un6e 2 роки тому +1

    So clear to understand what to do for mvvm with jetpack compose, thanks a lot~

  • @sanjaybhatikar
    @sanjaybhatikar 11 місяців тому

    Beautiful exposition of the MVVM architecture, grateful to you for this video.

  • @lyaeusv3828
    @lyaeusv3828 11 місяців тому

    Best tutorial for beginner you explain every step and I really appretiate that most ppl just go straight forward like type machines and they call it beginner friendly

  • @MaisUmSomente
    @MaisUmSomente 2 роки тому +2

    The Events for the screens, it was amazing, we can reuse everything, with kotlin and jetpack Compose. Of course not forgetting about the HILT, it does a beautiful job. Thanks for the class. God bless you

  • @zuhrulanam5971
    @zuhrulanam5971 2 роки тому +1

    woahh cool. you are very clear to explain , I never touch the design pattern but after watching this I laugh what I code . your code so clean and readable thanks!

  • @pazzuto
    @pazzuto 2 роки тому +1

    This is the most complicated ToDo app in any technology that I've seen. Good lord!

  • @chuka_obi5167
    @chuka_obi5167 2 роки тому

    Thanks for this tutorial Philipp! I enjoyed learning so much about android app development and your recap at the end as well. Keep up the great work, you are an inspiration for so many of us

  • @tonnie7079
    @tonnie7079 2 роки тому +8

    Liked the video and my takeaway was Events Handling - Events flows from the UI to the ViewModel and State Flows back to the UI from the ViewModel. There was also that bit of using optional query parameter in the Navigation route that I wasn't aware of. There is always something to learn on each video you do for beginners and veterans alike.

  • @ramzibenzohra3903
    @ramzibenzohra3903 2 роки тому +11

    You deserve 1 Millon like 😊

  • @ahamedmujeeb5601
    @ahamedmujeeb5601 2 роки тому

    Thank you Philipp .. Amazing guidance as usual.. 👍

  • @matiasgarcia6684
    @matiasgarcia6684 2 роки тому +1

    I follow all your videos, they are extremaly helpfull.

  • @ryanloong8081
    @ryanloong8081 2 роки тому

    Thank you Philipp. The video is very useful for me.❤️

  • @miracleukaka4085
    @miracleukaka4085 Рік тому

    Thank you son much Philip. I'm glad I really came across your channel and I haven't looked back. I really appreciate your contents. Not like I'm deserving of it, but I would love to see you make a video on an e-commerce app for both customer and merchant, implementing payment methods too. Thanks once again. 😊

  • @miladhashemzadeh5626
    @miladhashemzadeh5626 2 роки тому

    You are gr8 my friend always keep going up thank you a lot from bottom of my heart

  • @Sumitmaurya070
    @Sumitmaurya070 2 роки тому

    Great tutorial.. Clearing all doubts

  • @gigiperih
    @gigiperih 2 роки тому +1

    Awesome tutorial.. love the ‘live coding’ vibes..

  • @easybusinessou
    @easybusinessou 2 роки тому

    I don't know how to describe you , but you are AMAZING !!!

  • @techach3490
    @techach3490 2 роки тому

    amazing tutorial... thanks big time 🤩😄

  • @denkling
    @denkling 2 роки тому

    Du bist Gold wert!!!

  • @HaiderAli-hw8sn
    @HaiderAli-hw8sn 2 роки тому

    Hi,
    Thanks for the video. It helps me a lot.

  • @user-dn1ep2kb4o
    @user-dn1ep2kb4o 2 роки тому

    Wow finally! Thanks

  • @binhtruong7531
    @binhtruong7531 2 роки тому

    Happy new year Philipp!

  • @DaleHawkins
    @DaleHawkins 2 роки тому

    This may be your best overview video so far. Thanks!

    • @PhilippLackner
      @PhilippLackner  2 роки тому

      Wow, thanks!

    • @DaleHawkins
      @DaleHawkins 2 роки тому

      FWIW, I am making a presentation about Coroutines and Compose for my coworkers and I linked to several of your videos and playlists.

  • @natanferrero8588
    @natanferrero8588 Рік тому

    Thank you so much from Brazil.

  • @renzcarlosalanga1970
    @renzcarlosalanga1970 2 роки тому

    Ah all i need in one video thanks a lot

  • @Rafael-hk9pg
    @Rafael-hk9pg 2 роки тому +2

    Amazing video! Could you make a video on how to migrate a big project step for step to compose, where you should start etc.?

  • @favour2871
    @favour2871 2 роки тому

    ur a legend, this video is very helpful

  • @Dibyendu.M
    @Dibyendu.M Рік тому +1

    Thanks brother ✨

  • @omarmouki7246
    @omarmouki7246 2 роки тому +1

    I can't thank you enough ❤️❤️

  • @macb00kpro43
    @macb00kpro43 2 роки тому

    cool, updated practice for Android development.

  • @marekwalica4418
    @marekwalica4418 2 роки тому

    Good job, thank you

  • @themindsetgarage
    @themindsetgarage 2 роки тому

    I really appreciate your videos. Kindly make a habit of providing more room for coding by pressing Enter Key to give more room for viewers to see the above code and understand it as you go on. I have always found myself making small pauses and pressing back-key to read a previous code.

  • @lindawolf0707
    @lindawolf0707 8 місяців тому +5

    YAY I managed to finish it! This tutorial is a real gem, it covers so many concepts of Kotlin and Jetpack Compose that are demonstrated in action right away. Thanks a lot Philipp!
    The next step is to use this project as a template for a different CRUD app.
    The most challenging part was to fix dependency errors at the very beginning, since some of the versions are deprecated. Quick advise, instead of importing the intial project from git, create a new one and revise the dependencies one by one, setting more up to date versions or completely refactoring them. For example, kapt is no longer supported, instead you should use ksp.

    • @adityakumdale6300
      @adityakumdale6300 6 місяців тому

      moving kapt to ksp is not working , I did all from official docs. Does gradle version matter

    • @chax255
      @chax255 Місяць тому

      @@adityakumdale6300 I hope u managed to solve it, u actually need to apply the jetbrain plugin on both the root and app gradle builds. It worked for me that way

    • @maheshbhat0401
      @maheshbhat0401 Місяць тому

      ​@@chax255​ can you please elaborate it a bit. I am stuck here resolving the dependencies

  • @mrpi230
    @mrpi230 2 роки тому

    Great 👏

  • @user-nf3xn4mg3e
    @user-nf3xn4mg3e 10 місяців тому

    It's so useful and interesting

  • @tabaicanking3701
    @tabaicanking3701 2 роки тому +2

    Hi man, thanks for the tutorial. The thing is I'm new to android and I believe the best way to learn is to start with the basics and I was wondering if it's possible to build an app like this one without using mvvm. If yes can you please make one for us for it will help us understand the importance of using mvvm architecture. Thanks in advance

  • @jayprakashjaiswal8220
    @jayprakashjaiswal8220 2 роки тому

    Happy new year bro

  • @manticomar1146
    @manticomar1146 Рік тому

    OMG you are a genius

  • @berkc5323
    @berkc5323 2 роки тому

    this is an extremely underrated youtube channel. you should be famous.

  • @johnkimani275
    @johnkimani275 2 роки тому

    Much appreciated man. Also I've been struggling to intergrate graphQl with Kotlin but in vain. Is it really supported in Kotlin? What's your thought?

  • @hevazdev8449
    @hevazdev8449 Рік тому

    I like this video about MVVM architecht, also I learned my english

  • @toidoan1026
    @toidoan1026 2 роки тому

    Thank you

  • @love_khush
    @love_khush 2 роки тому

    @Philipp Lackner
    Could you please make a video for room migration using the same project. it would be great help

  • @footballCartoon91
    @footballCartoon91 Рік тому +2

    @3:23 setting up the project is really difficult because i have to search on stack overflow what to do like changing compileSDK to 32 and deleting the line composeOptions in the gradle.build app (module)

  • @leonardosibela
    @leonardosibela 2 роки тому

    First of all, great content!! Love your videos a lot!!
    Second, on Hilt, why do I have to annotate the module with SingleComponent and the method with Singleton? I got confused what's the reason to use both annotations.

    • @PhilippLackner
      @PhilippLackner  2 роки тому +3

      SingletonComponent = Defines the lifetime of the dependencies (live as long as the app)
      Singleton = Defines the scope. Here it means there will only be a single instance of your dependency that's reused

  • @redplant5926
    @redplant5926 3 місяці тому

    Thank you for this video. It gave me a much needed real app architecture insight.
    The outdated dependencies were a pain though, especially the ones related to dagger hilt and the new dsl for declaring dependencies.
    Still, after hours of racking my head and searching online, I was able to follow along with the code and built the app. So again, thank you.

    • @JonJon-po6xt
      @JonJon-po6xt 2 місяці тому

      Do you have the updated dependencies for dagger hilt ? If so, could you kindly share them? I've really struggled to find the updated ones.

    • @JonJon-po6xt
      @JonJon-po6xt 2 місяці тому

      Or better yet, could you share your project's github link please

    • @maheshbhat0401
      @maheshbhat0401 Місяць тому

      Hey, Currently I am going through same problem. Can you provide the solution to it

    • @maheshbhat0401
      @maheshbhat0401 Місяць тому

      @@JonJon-po6xt Did you fix the issue?

  • @saurabhsomani582
    @saurabhsomani582 2 роки тому

    Great talk, I always love your videos. I have a query. Why is the repository instance annotated as a singleton in the Hilt AppModule?

    • @PhilippLackner
      @PhilippLackner  2 роки тому +2

      Because we only need a single instance of it during the whole app's lifetime

  • @miragethakore2218
    @miragethakore2218 2 роки тому

    Great

  • @jayrodriguez9201
    @jayrodriguez9201 2 роки тому +2

    Hi, I've got a question about the coroutines Channel. Is it a solution that you would use in a big scale production app or is it more suited for smaller projects? In bigger apps there would be tons of events, so my concern is that it would become tiring to keep track of them. Also about navigation-compose, have you had any problems while using it, have you considered using compose for views with fragments for navigation?

    • @GakisStylianos
      @GakisStylianos 2 роки тому

      What's the concern you have about apps with more events exactly?

  • @muralijoyn4469
    @muralijoyn4469 2 роки тому

    I like the way you teach, All the topics can be understood easily, I would like to purchase some of your courses but I see those are a bit expensive, If you try to keep them at affordable prices, It will help most of the developers to improve their skills.
    Thank you..!

    • @PhilippLackner
      @PhilippLackner  2 роки тому +2

      Thanks glad you like my free stuff! The courses might look pricy, but if you consider what you get out of it, it's a joke honestly. For example my most recent course teaches you so many important industry level skills and really helps to become job ready. It's a one time investment and you'll get the skills for a job in the quickest time possible, I think that's a good deal.
      And of course somehow i need to be able to maintain making all these free videos

  • @seanknowles9985
    @seanknowles9985 2 роки тому

    We need a video of how to take pictures and upload to firebase storaage lol, no where on the internet can I find a simple well explained video or tutorial. Its crazy.

  • @johnwilkesbooth8000
    @johnwilkesbooth8000 2 роки тому +1

    Hello Teacher what IDE you are using to teacg us Android Development? I think it's Intellijidea?

  • @jatinvashisht4293
    @jatinvashisht4293 2 роки тому

    What a coincidence 😄🤣
    I yesterday finished making a todo app

  • @marcus6580
    @marcus6580 2 роки тому

    厉害厉害

  • @footballCartoon91
    @footballCartoon91 Рік тому

    bro, does business logic includes setOnclickListener interface?
    if we want to implement it we write the code inside another class right?
    and then instantiate it inside main activity

  • @barnabasnomo7047
    @barnabasnomo7047 2 роки тому

    Great Tutorial Philipp. I wanted to know if there was an easy way of installing the dependencies through Android Studio instead of typing then explicitly. I notice my Android Studio always tells me I can do that from the Project Structure. Thanks!

    • @barnabasnomo7047
      @barnabasnomo7047 2 роки тому

      Also, I noticed that you get a similar project directory setup if you use the "Empty Composer" option during project creation.

  • @jaygarzon9846
    @jaygarzon9846 2 роки тому

    Hello may I ask something? Why do we use Kotlin Flow here instead of live data? Assuming they both listen to any changes within our list.

  • @EverythingWithKotlin
    @EverythingWithKotlin 2 роки тому

    Can you do a full modular mvvm with hilt please ?

  • @rasmusb639
    @rasmusb639 2 роки тому

    Nice tutorial - i've spend the last few days following along, and copying your code. I was not able to find this code in your github repo?

  • @alexsannikov3398
    @alexsannikov3398 Рік тому +1

    Please correct me if I am wrong, but aren't we almost following an MVI architecture by making use of Events, and having a giant 'when' clause in the TodoViewModel at 42:40?

  • @universal1755
    @universal1755 10 місяців тому

    nice

  • @ShaqarudenGames
    @ShaqarudenGames 2 роки тому

    A bug I found with this app is when you deleted a todo item and attempt to create a new one, the navigation does not happen until the snackbar as disappeared. If you continuously tap the + button it will navigate more than once so when you finish creating your todo item and tap save it does not go back to the todo list

  • @jeffreyromero9169
    @jeffreyromero9169 Рік тому

    Was great up to 33:26, where it got very complicated. Is there a simpler way to proceed from that point onwards?

  • @alexkal820
    @alexkal820 2 роки тому

    I have a question. We could just take the insert etc methods from dao without making all these classes and use them however we want right?

  • @GabrieleRugani
    @GabrieleRugani 2 роки тому

    How do you use the string resources in the viewModel ?

  • @michaelchristensen8350
    @michaelchristensen8350 2 роки тому

    Hello. Maybe i dont understand ?
    But is there a way to get only the start project ( not the entire source code for the finished project) So that i Can code along with the project ?

  • @coocys2143
    @coocys2143 2 роки тому +1

    Can you maby do an example with a more complex room Database that has more Tables and relations? Would be nice :D And Great VIdeo btw ;D

    • @PhilippLackner
      @PhilippLackner  2 роки тому +2

      Check this playlist: ua-cam.com/play/PLQkwcJG4YTCS3AD2C-yWtJUGTYMh5h3Zz.html

  • @javad0470
    @javad0470 2 роки тому

    hi Philipp please make tutorial about kotlin multiplatform and make your complete archive more complete😅

  • @pinoy_marites_beh
    @pinoy_marites_beh 2 роки тому

    UiEvent and specific screen event (e.g TodoListEvent) is kinda confusing, especially when a project grows bigger, what I understand is events such as TodoListEvent holds "state' of the UI that persist values (such as for screen rotations), while UiEvents are one-time events only, why is then the FAB button action/event included in the TodoListEvent if its only 1 time per se?

  • @brawlstar3731
    @brawlstar3731 2 роки тому

    please make an video on UIEvent

  • @HappyLeoul
    @HappyLeoul 2 роки тому

    Why don't you have mapper class [Entity to Object, and vice versa] for this project?

  • @pritamdas1156
    @pritamdas1156 2 роки тому

    daggerhilt vs koin which to use

  • @LucasAlfare
    @LucasAlfare 2 роки тому

    What about MVVM implementation over Compose Desktop?

  • @NavinPrasad06
    @NavinPrasad06 2 роки тому

    Hi Philipp, What's difference b/w this and Note application which you already built earlier?

    • @PhilippLackner
      @PhilippLackner  2 роки тому +2

      This is a Todo app here, not a note app. But yeah, difference is that here I focus on plain MVVM while the other one focuses on clean architecture on top of MVVM

  • @sharmpuneet
    @sharmpuneet 2 роки тому

    Why are use cases not returning flows but repository ?

  • @iliasg
    @iliasg 2 роки тому +19

    Greatly appreciated! Could you also make a video about how clean architecture, dagger Hilt and mvvm are structured and used in a real multi-module app, not only a single module app?

    • @PhilippLackner
      @PhilippLackner  2 роки тому +25

      I'm working on a bigger course about multi-module architecture since this big topic shouldn't just be handled in a single video :)

    •  2 роки тому +4

      @@PhilippLackner oh God!! thanks! I bought your canvas and doodlekong courses and they are making my holidays! Keep up the good work you're doing maestro! stay blessed!

    • @PhilippLackner
      @PhilippLackner  2 роки тому +4

      @ thanks a lot for the support and glad you like them!

    • @asiimwedismas
      @asiimwedismas 2 роки тому +1

      @@PhilippLackner this is much needed, your testing playlist is very comprehensive, great work. and if I may also suggest, If you get time could you add how to use firebase emulators and write unit tests for firebase functionality. Thank you

    • @lmaoiwaslikelmao1132
      @lmaoiwaslikelmao1132 2 роки тому

      @@PhilippLackner Your first video on DI for Hilt is easily the best one on youtube. I've watched many of them but yours is explained the best.

  • @matteoZattera
    @matteoZattera Рік тому

    Why the TodoRepository interface doesn't extend the TodoDao interface?

  • @sanjaybhatikar
    @sanjaybhatikar 11 місяців тому

    Nice expo. Stuck in dependency hell with Dagger-Hilt though. Seems to me like the versions of Dagger-Hilt, Kotlin compiler and gradle just cannot agree with each other. :)

  • @raheemadamboev
    @raheemadamboev 2 роки тому

    Thank you so much bro

  • @nakeepanpi9349
    @nakeepanpi9349 2 роки тому

    Hello, Philipp Lackner I want you to make video with work manger in android.

  • @mouzinu
    @mouzinu 2 роки тому

    Philipp could you please make a video about Paging3/RemoteMediator? I'm struggling to understanding API + Caching inside RemoteMediator.

    • @bjugdbjk
      @bjugdbjk 2 роки тому

      Check the channel The Android factory and playlist rick and moti course , It has content of paging 3 !! it will help !!

  • @RaghulS-nl6wx
    @RaghulS-nl6wx 10 місяців тому

    I have completed the code as u did but got a big problem while debugging my app in gradle build for room and hilt configuration someone help me resolve

  • @matteoZattera
    @matteoZattera Рік тому

    There's a problem, If I press a lot of times the save button on the AddEditTodoScreen with the title textfield empty, then I put a title, then If I press again the save button I need to wait all snackbars to finish for returning in the TodoListScreen

  • @mwamimusembi2205
    @mwamimusembi2205 6 місяців тому

    The viewmodel has dependencies, you require a factory for the viewmodel to pass arguments, how does he circumnagivate this requirement in this project tutorial

  • @vengateshm2122
    @vengateshm2122 2 роки тому

    Hey Phillip could you create videos on uncovered APIs in Kotlin language.

  • @youprimeprime3046
    @youprimeprime3046 2 роки тому

    Just brilliant, what about the same but using API and Ktor?

  • @vaibhavverma4286
    @vaibhavverma4286 Рік тому

    Can anyone tell in 47:11 how event.todo is valid?Like event is of the type TodoListEvent.

  • @shreyass5726
    @shreyass5726 Рік тому

    Why we had used UIEvent to call PopBackstack instead of calling the method directly in UI. Now when user click it will call ViewModel method set event -> trigger UIEvent channel -> call the callback (PopBackstack)? Does this wont create complexity

  • @wonderfulupdate4419
    @wonderfulupdate4419 Рік тому

    is this architechture a clean architecture or only its just a MVVM

  • @peshutanpavri1599
    @peshutanpavri1599 2 роки тому

    Excellent, thank you. But I can't inject the view model, I am getting unresolved reference for the hiltviewmodel() method

    • @chaitany.a
      @chaitany.a Рік тому

      did you find a solution?

    • @Nazar-uz7io
      @Nazar-uz7io 9 місяців тому

      @@chaitany.a you need to add
      implementation 'androidx.hilt:hilt-navigation-compose:1.0.0'
      in your build.gradle file. That helped me

  • @hanadanefa7837
    @hanadanefa7837 Рік тому

    there is a bug on the app, how to fix it,
    the bug is when you delete a todo then after that you tap or click the add floating action button, it will not perform the desired action until snackbar disappears and when you tap it repeatedly you will have so many AddEditTodoScreen, how to fix it?

  • @Hoti-ta
    @Hoti-ta 2 роки тому

    Does this UiEvent class influenced from MVI reducer or its just me whos find similarities?

    • @PhilippLackner
      @PhilippLackner  2 роки тому +1

      yeah it's similar, but somehow the UI needs to be able to receive events from the VM

  • @foreverrafs
    @foreverrafs 2 роки тому

    ❤️

  • @ajay-ri7ex
    @ajay-ri7ex 2 роки тому

    Hey man I really like the font that you use in your android studio. What's the font name ?

  • @asiimwedismas
    @asiimwedismas 2 роки тому

    Don't you think it would be better to have the repository interface extend the dao rather than copying the dao's methods over to the repository... 👍 btw, great work, I passed a pair programming interview by doing exactly what was in your tutorials... 👌

    • @asiimwedismas
      @asiimwedismas 2 роки тому

      @@_th3j4ck4l interface ToDoRepository : TodoDao and ToDoRepositoryImpl : TodoRepository ... In the end ToDoRepositoryImpl has to implement all the methods in the dao... You avoid having to copy and paste functions when you make changes in the dao.
      I think your argument of "incorrect use of the repository pattern" is wrong because the ToDoRepositoryImpl can still extend other interfaces that get data from other sources and even have its own unique methods.
      Bottomline here is avoid copy and paste where you can.

  • @Booyaah69
    @Booyaah69 2 роки тому

    Oh i see the slack app there.