Тёмный

The FULL Beginner Guide for Room in Android | Local Database Tutorial for Android 

Philipp Lackner
Подписаться 168 тыс.
Просмотров 115 тыс.
50% 1

In this video, you'll learn the ins and outs about Room and local databases on Android so you can get started implementing your own.
⭐ 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 be your mentor and become an industry-ready Android developer in 10 weeks:
pl-coding.com/drop-table-ment...
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/Roo...
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...

Опубликовано:

 

14 мар 2023

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 180   
@finnishcountryrussiansoulf9425
@finnishcountryrussiansoulf9425 6 месяцев назад
IF YOU WANT TO FOLLOW THIS TUTORIAL STEP BY STEP, use these settings: Empty activity(jetpack compose, the purple one), min sdk 24, groovy dsl. IN build.gradle(module :app), target sdk 33. Use room 2.5.0, as the latest version needs target sdk to be 34. activity-compose should be 1.7.2, jvm target 17, compileOptions source an target java version 17. These setting worked for me, if you have build errors, read them through and correct the versions or just copy paste them into stack overflow. Commenting this cause I had a lot of issues with the versions conflicting.
@yuvarajg3195
@yuvarajg3195 6 месяцев назад
This information really helped in adding the dependencies to my files Thank you!
@twothreeoneoneseventwoonefour5
@twothreeoneoneseventwoonefour5 6 месяцев назад
if you have versions confilicting just use the latest versions always, problem solved
@DaveDivines
@DaveDivines 3 месяца назад
Took a fair amount of time for me to realise it was groovy instead of kotlin Thanks
@mateuszczuba9684
@mateuszczuba9684 7 месяцев назад
Philipp, my man, you're a true hero! You're helping me through my college course like nobody else.
@sanjaybhatikar
@sanjaybhatikar 11 месяцев назад
This video is a god-send! Hope you have a long life and make many such videos that spread knowledge among the people who value it. Cheers!
@rohitwaghole5334
@rohitwaghole5334 Год назад
Mahn you're doing so much for us, just keep it like that, love form India
@Bert-lv3jt
@Bert-lv3jt 7 месяцев назад
from*
@MrPicklepod
@MrPicklepod Год назад
You're tutorials are amazing, I was just looking for a Room tutorial and saw that this dropped recently I feel so lucky lol
@thebrassbeat
@thebrassbeat 4 месяца назад
Thanks man, the video fully describes all the steps to implement room. Also I liked that the code structure is well on point.
@pablovirus
@pablovirus Год назад
Thank you man you are making learning all this so much easier. You are a legend
@user-ff8pg1fe9f
@user-ff8pg1fe9f 2 дня назад
Fabulous! That could not be better. Thanks!
@sergeilebedev7725
@sergeilebedev7725 11 месяцев назад
I have learned a lot! Thank you Philipp
@c0degalaxy
@c0degalaxy 3 месяца назад
About a year passed but still actual topic. Watched this more than 4 times, still need to watch more))
@9Blurke9
@9Blurke9 Год назад
This is exactly what I needed. Thank you.
@deshabhaktg6530
@deshabhaktg6530 Год назад
Thanks for such a wonderful and in depth explanation...you are a gem❣️
@Eyyuphan439
@Eyyuphan439 Год назад
Continue man, you are doing very well.
@morrolan
@morrolan Год назад
Great tutorial Philipp! I would love to see how you would extend this to sync the data with an API containing a master database. For example if this is a shared contact list with all users of the master database.
@MrPieTech
@MrPieTech 5 месяцев назад
You will just have a query for all contacts, then request persmision to read all contacts then use the cursor that it returns to you
@sushant5800
@sushant5800 Год назад
woow you uploaded what i was searching for,, thank you so much
@mynameisearlb
@mynameisearlb 9 месяцев назад
Thank you, quite a long tutorial but it's what i needed for my app!
@wilkq1110
@wilkq1110 Год назад
Thank you bro, you do good job for all of us
@shivam__singh
@shivam__singh 9 месяцев назад
Love from India dude ❤❤ great job 🙏
@lisajameson7554
@lisajameson7554 4 месяца назад
Fantastic video. Thank you!!!
@thencode8403
@thencode8403 Год назад
You really know you stuff man❤❤❤
@Kazner0h
@Kazner0h 7 месяцев назад
There's so much about this I still struggle to understand, between these tutorials and the official android ones. It seems like the way you do it and the way they do it is so different despite using the same systems. If anyone else is struggling to understand these concepts, know that you're not alone. A lot of the tutorials and guides for these subjects contradict each other, and it is difficult to tell what the differences between the implementations are.
@finnishcountryrussiansoulf9425
@finnishcountryrussiansoulf9425 6 месяцев назад
The problem with android studio, is that some people use kotlin. others java, some use jetpack compose, some xml layouts, gradle has a few different implementations, different vesions, sdks, android studio layouts, standards and all of that is really messy. Just learn the tools you use separately, don't follow tutorials step by step. I know it sounds hard but that's the truth. If you still want to contunue this tutorial, use these settings: Empty activity(jetpack compose, the purple one), min sdk 24, groovy dsl. For gradle, target sdk 33. Use room 2.5.0, as the latest version needs target sdk to be 34. activity-compose should be 1.7.2, jvm target 17, compileOptions source an target java version 17. These setting worked for me, if you have build errors, read them through and correct the versions or just copy paste them into stack overflow.
@zainuldin9095
@zainuldin9095 4 месяца назад
In react-native or flutter you can achieve same features by writing 2 or 3 lines of code. i would say kotlin is totally useless. it is not worth checking out.
@BhardwajHackology
@BhardwajHackology Год назад
Thank you for this video !
@victoralmeida1583
@victoralmeida1583 9 месяцев назад
Awesome! Thank you.
@wzsh
@wzsh Год назад
Great video, I would like to ask if there a way to output the raw sql query statement in logcat when I invoke Dao each time.
@UriahHeep-gj5jj
@UriahHeep-gj5jj 5 месяцев назад
this is a great tutorial. Thanks for sharing Philipp. Now you only include inserting and deleting records, any chance of including an updating example? I tried to include a checkbox in the table, but have not been succesful in making it work.
@TheZaurHasanov
@TheZaurHasanov Год назад
You are perfect! Thanks
@Serosim
@Serosim Год назад
Hello Phillipp, Great work! I got just one question. Could you explain why this time we are not have to make instance of database inside companion object in ContactDatabase class?
@omkarpawar1741
@omkarpawar1741 Год назад
can you explain the difference between statein(.... , whilesubscribed(5000) ) and collectAsStateWithLifecycle () are they supposed to do the same thing, because whilesubscirbed waits for 5 seconds ?
@pablovirus
@pablovirus Год назад
I did code along while watching and everything worked perfectly fine! I also figured out (with a bit of help form Perplexity AI and the docs lol) how to make a @Preview for the ContactScreen and populate this preview with a few contact numbers. It was a good exercise as well I have a question. If I were making a multi-screen UI or if I were to add more functionalities such as a sidebar menu, should all the classes, interfaces, and other relevant files be each contained in separate folders within the root of the app according to their functionality? Do you have any guide or reference on the best practices for how to organize source code project files?
@nrg4285
@nrg4285 3 месяца назад
Check his latest video at the time of my comment, he just made a new video about project folder structure
@nakrakanykrakowiaczek1187
@nakrakanykrakowiaczek1187 Год назад
There's always _state used, but when it comes to saving a contact you use state.value, is it correct? I'm building my first app with room database and I had some issues with saving (some parameters where always set to default despite what was set by user in form). When i changed the state.value to _state.value problem is gone :|
@iandbd288
@iandbd288 7 месяцев назад
I love all the work you put in here, but how do you implement updating a contract this way?
@marlonlom
@marlonlom Год назад
great content! as a question: how can i configure room inside an android library, how to handle the database loading when the database config is outside the mobile app module?
@NareshDhakecha
@NareshDhakecha Год назад
Thank you bro... How can I manage state of data fetching from Room like Loading, Success, Error with this combined state approach?. This approach is similar to React-Redux, but can't understand how to apply in Android-Kotlin.
@omkarpawar1741
@omkarpawar1741 Год назад
can you provide a Database relations with Room tutorial with compose and Kotlin flows
@blackw302
@blackw302 5 месяцев назад
Won't this cause unnecessary recomposition of both AlertDialog and the ContactScreen each time you enter a new letter into the TextField's in the AlertDialog? Since you send a SetFirstName event each time.
@waleedal-thawadi2783
@waleedal-thawadi2783 5 месяцев назад
I appreciate your knowledge sharing, wish you happiness in your life.
@YonkoCraft
@YonkoCraft Год назад
Just a question is the playlist about relational database you have still work or it's outdated and if so please make new one
@giorgidolidze1640
@giorgidolidze1640 Год назад
Why is upsertContact/deleteContact suspend (in DAO) and other three functions not?
@blankname
@blankname Год назад
Great video! I learned a lot. I'm creating an app where users can login and sync their content from an API to view locally later. I'm anticipating that some users may switch between accounts, and I'm wondering how to handle the database so that the data is still cached when the user returns to a previous account. Do you have any tips or best practices for this scenario? I'd really appreciate any insights you can offer.
@ka61er
@ka61er Год назад
Just check id user related to account you want to sign in in database
@user-jb1ff9ij2g
@user-jb1ff9ij2g 10 месяцев назад
Bro why my viewModelScope is not importing its telling me that you have unresolved reference. when i m implementing onEvent function in ContactViewModel
@osmanmusse9432
@osmanmusse9432 Год назад
Great Video
@gunasekarboomibalan4340
@gunasekarboomibalan4340 Год назад
Hi @Phlipp, can you please share a tutorial how to share android apks for different varients shared to different appcanter from single jenkins account?
@bulllletsss
@bulllletsss Месяц назад
The Dependencies dont work for me,. I added the same id under Plugins and the exact same dependencies but jetpack compose cant sync. Instead I get the "unresolved reference" Error on the kapt dependency. Anyone know a fix?
@adityagarud861
@adityagarud861 Год назад
which keyboard you use ??
@xChikyx
@xChikyx 7 месяцев назад
21:13 no matter what i do, i still get the error at the .delete thing... update: nothing that has viewModelScope works for me. it never recognizes it as something that exists i guess... idk why
@masti437
@masti437 Год назад
@Philip ... Is there a built in .db file viewer in android studio where we can browse tables
@PhilippLackner
@PhilippLackner Год назад
Showed that in the video 😅
@Knee_High
@Knee_High 6 месяцев назад
I followed the tutorial but when I test the app on the emulator, it crashes and I cannot figure out why....
@Wizzardo
@Wizzardo Год назад
Is it possible to make a Activity/Views/Fragments version of this instead of Jetpack Compose?
@tmjromao
@tmjromao Год назад
Many thanks for the beginners guide. Why (still) Room and not Realm? Since Realm is the elected lib for KMM
@tevlex6141
@tevlex6141 8 месяцев назад
right from the start "unresolved reference def: " why?
@gamermom1945
@gamermom1945 Год назад
As always you're the absolute best! Thank you! If you have a database with one to many and many to many relations as in your other video "Android Room with Multible Tables", how do you map them to models you can use in the UI?
@shs4293
@shs4293 7 месяцев назад
Did you find out?
@khemmahato8420
@khemmahato8420 Год назад
Wow man you are great at writing clean code.
@PhilippLackner
@PhilippLackner Год назад
Thanks!
@victoryghor9009
@victoryghor9009 Год назад
I have one problem with text parameter of AlertFialog, I trying to put the parameter Buttons but it seems that is do not exists
@needankeistgenug
@needankeistgenug 11 месяцев назад
Same here. Did you fix it?
@loogibot
@loogibot 3 месяца назад
The 'buttons' parameter doesn't seem to be working with AlertDialog, so I used 'confirmButton' and 'dismissButton' instead. For 'dismissButton', you can use the 'HideDialog' method from 'ContactEvent'. I hope this helps!
@khabbazz89
@khabbazz89 7 месяцев назад
i will try with you
@arpitmukhopadhyay9235
@arpitmukhopadhyay9235 10 месяцев назад
This Tutorial is great.. Please make tutorial on Room with API using Retrofit
@hotellinaweb
@hotellinaweb 8 месяцев назад
Why would you use room with Retrofit? Room is a local DB and IMO you do not need Retrofit to store or get stuff on/from Room DB.
@mothhunter1889
@mothhunter1889 9 месяцев назад
So we have the interface ContactEvent, which contains nested classes (I think??), which themselves implement the ContactEvent interface. Shouldn't that lead to an infinite recursion, where every nested class contains (through the implemented interface) every nested class again?
@hotellinaweb
@hotellinaweb 8 месяцев назад
I asked the same in a new comment.
@_zantetsuken_
@_zantetsuken_ 8 месяцев назад
You don't instantiate ContactEvent like in the regular sense of using Interfaces. In this case, the sealed Interface is roughly said an enum of interfaces that represent a shared type (ContactEvent).
@mothhunter1889
@mothhunter1889 8 месяцев назад
@@_zantetsuken_ thanks for the explanation!
@imamyusupbachtiar5461
@imamyusupbachtiar5461 Год назад
Bro, it's MVI pattern you was used ?
@RoseWilson-uc8tk
@RoseWilson-uc8tk 4 месяца назад
cool video)
@aapipcps2311
@aapipcps2311 Год назад
may I ask you a question philips? what do you think about greendao (database local) vs room?
@JacobFerrero
@JacobFerrero Год назад
GreenDao is discontinued, ObjectBox is its successor.
@aapipcps2311
@aapipcps2311 Год назад
@@JacobFerrero thanks for your info, i'll try ObjectBox someday
@pratyushprashob167
@pratyushprashob167 3 месяца назад
Is there any way to prepopulate the database?
@ibrhm.117
@ibrhm.117 Год назад
Wtf, the moment I need a new shenanigan, you drop a video on that topic, 😂
@Darkrexjunior-dm5gc
@Darkrexjunior-dm5gc 2 месяца назад
can i get that color scheme he is using in ide?
@sreeranjas6585
@sreeranjas6585 Год назад
Goat of mob dev
@joshuarobles75
@joshuarobles75 28 дней назад
Alert Dialog, Title and Text no longer in the parameters of the new one, also button not included
@pierremarais7669
@pierremarais7669 Год назад
Hi Phillip thanks for the video, I heard that Room is not secure for Android devices. Is this true? thanks Pierre
@rafaeloledo
@rafaeloledo 28 дней назад
3:44 nice tool
@Leon-un2ii
@Leon-un2ii Год назад
Does someone have an idea why my Material 3 isn't working anymore with this tutorial?
@matiasgarcia6684
@matiasgarcia6684 Год назад
Great tutorial!! i see all of your videos, is other level..., but i got an error with de Room database:"C:\Users\Lenovo\AndroidStudioProjects\JetpackRoomApp\app\build\tmp\kapt3\stubs\debug\com\matec\jetpackroomapp\data\Depot.java:7: error: Entities and POJOs must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type). public final class Depot {"
@NotamechanicBetty
@NotamechanicBetty Год назад
when I run it I get a Duplicate class found error, any suggestions to fix this? also, you are a great instructor the way you explain things is very helpful thank you for making these videos.
@PhilippLackner
@PhilippLackner Год назад
Upgrade your Kotlin version to 1.8.10 :)
@NotamechanicBetty
@NotamechanicBetty Год назад
@@PhilippLackner IT WORKS!!! you might not understand how happy this makes me 😁😁😁thank you
@KevinID-sx8sn
@KevinID-sx8sn 11 месяцев назад
Do you have paging tutorial?
@fabiodecarvalho4581
@fabiodecarvalho4581 6 месяцев назад
Thanks for this. I do have to say that I think you over engineered it a bit. This could've been 15 minutes. The tutorial focused too much on Flows, Compose and other things. I haven't worked with either before and I lost a few hours just trying to understand the basics of it when I really just wanted to work with Room. However, it was still a great tutorial, it just could've been shorter and more focused on Room itself.
@notbob3590
@notbob3590 11 месяцев назад
This is for kotlin and not groovy?
@DineshKumar-ef3et
@DineshKumar-ef3et Год назад
In Mobile application to took the print a docu in printer
@kevinrea7820
@kevinrea7820 10 месяцев назад
since this is a beginners course, when you goto create a New Class, could you do it slower on the screen please..
@xbox70333
@xbox70333 10 месяцев назад
use '.' and ',' keys to skip each frame
@balusekhar
@balusekhar Год назад
Make a video on firebase as well
@austinevick
@austinevick Год назад
Great content always. Pls can you put one of your course on Udemy?
@PhilippLackner
@PhilippLackner Год назад
I got them all on my website: pl-coding.com/premium-courses
@balusekhar
@balusekhar Год назад
​@@PhilippLackner in india it will be difficult to pay in pounds. So try to put them in udemy🙂
@Eyyuphan439
@Eyyuphan439 Год назад
@@balusekhar You are right.
@mohammedabdulrahman5045
@mohammedabdulrahman5045 Год назад
@@PhilippLackner Same here in Ghana: it's somewhat harder to purchase in Pounds.
@donjeph
@donjeph Год назад
@@PhilippLackner please even if it is just one on Udemy it easy to get there
@freshtechtips
@freshtechtips Год назад
What about sqldelight? It support multiplatform
@PhilippLackner
@PhilippLackner Год назад
I have a video about that already
@freshtechtips
@freshtechtips Год назад
@Philipp Lackner I know but why we still use room here?
@jayantkumar1954
@jayantkumar1954 Год назад
Sql delight is used for KMM and KMP , not for native development
@freshtechtips
@freshtechtips Год назад
@@jayantkumar1954 It's possible to use it in native android project + in kmm the app on android is still completely native while on ios maybe only the UI which is great
@terencesajere6426
@terencesajere6426 Год назад
When I click save it replaces my data instead of adding a new one
@mynameisearlb
@mynameisearlb 9 месяцев назад
Did you use insert instead of upsert?
@astaghfirullahalzimastaghf3648
stuck at @3:48 "no devices selected" App Inspection > Select Process
@jedrzej2338
@jedrzej2338 8 месяцев назад
i have same problem, do you have any solution?
@user--10552
@user--10552 4 месяца назад
ohh man i like how you organize the code even i got just 1% of the code hhh
@backupproducer
@backupproducer 3 месяца назад
Great video. Of course, Android had to make handling database as complicated as possible. Ugh.
@cristicode4301
@cristicode4301 Год назад
It's an amazing amount of code for just making a note. Is this how things are on Android or are you overcomplicating things? This is really hard to follow and is not very begginer oriented. The tutorial itself is good, but for people that have some experience already with Kotlin and Android.
@PhilippLackner
@PhilippLackner Год назад
The main code is for the UI. Similar amounts would be needed when making a website to do this. This is a beginner guide for Room, not for Android. Can't teach kotlin and Android basics in every video, I have Playlist for that
@ClicktoWatchFree
@ClicktoWatchFree Год назад
I was struggling with room database
@ielts_listening_preparation
@ielts_listening_preparation 6 месяцев назад
Ary you following MVVM in this project?
@KostahWasTaken
@KostahWasTaken 5 месяцев назад
There was used viewmodel but it's not MVVM it's MVI there is difference MVI uses intents which represent user actions/events. MVVM uses property binding to automatically propagate changes between View and ViewModel.
@SweetPeachannel
@SweetPeachannel Год назад
mate, anywhere can I contact you directly?
@PhilippLackner
@PhilippLackner Год назад
For business inquiries the email stated on my channel page. Not for coding questions though
@Dylanm94
@Dylanm94 9 месяцев назад
"So this is a step by step guide on how to make a Room database. Now just make a sealed abstract suspended data class function that has these private vals, enums, mutable state contact event, e=mc2, 9/11 was an inside job" Right... I just wanted to write some data to my new database table. :)
@Kazner0h
@Kazner0h 7 месяцев назад
I had this same reaction 😅
@PowJey
@PowJey Год назад
Saving for later 29:56
@michaelappiah-kubi2829
@michaelappiah-kubi2829 6 месяцев назад
This I'm sorry to say isn't beginner friendly. There's so much happening other than Room itself (main reason for watching this video) it's distracting. I know it's hard work to put content out but I just had to point that out.
@astaghfirullahalzimastaghf3648
@2:33 gradle languange is like python
@astaghfirullahalzimastaghf3648
@8:37 I really hate interface, but since kotlin has a feature like property delegation (that does not exist in C++) maybe it is good idea to have it. Also in java and kotlin, an interface can be converted to a real and concrete class at runtime called something like `ProxyClass` or something like that. Maybe this is the reason everybody love interface in Java and Kotlin. Remember this one in the Retrofit tutorial.
@astaghfirullahalzimastaghf3648
@2:54 in C++ `::` means scope Resolution operator but in kotlin it means what? let's google first
@shs4293
@shs4293 7 месяцев назад
Still don't understand how a single table tutorial would be useful, I am looking for multiple tables tutorials with one to many relationships but there aren't any.
@finnishcountryrussiansoulf9425
@finnishcountryrussiansoulf9425 6 месяцев назад
This is just sql basics, no? You get the structure from this video, if you want to make multiple tables with relations, make a graph and connect the tables by fields. You'll have to make your own query methods tho.
@ug_it_english
@ug_it_english 8 месяцев назад
I do not find this video is for basic learner to master concepts of room, you have used a lot of methods, difficult to follow, i think you are targeting experts to watch it not starting learner !!!
@dleonardo3238
@dleonardo3238 5 месяцев назад
This was very easy and simple. Are you a beginner in android or beginning in programing completly?
@justmeagain9302
@justmeagain9302 4 месяца назад
You need to learn the fundamentals first or you might get lost a lot
@tenzinchoepheldev
@tenzinchoepheldev 4 месяца назад
It is not for noobs . It is for beginner to intermediate
@Eyyuphan439
@Eyyuphan439 Год назад
we will wait Rerofit.
@xdanoproxd6560
@xdanoproxd6560 Месяц назад
its not working like not working at all
@user-lk2jh3xl4l
@user-lk2jh3xl4l 5 месяцев назад
I can't get the AlertDialog working properly, title text and buttons parameter cannot be find... but my code is to the space bar identical to the one in the tutorial... I dont get it any help would be nice ?
@YasirZaman-jo4tf
@YasirZaman-jo4tf 4 месяца назад
simple problem dude, I am stuck now here.
@loogibot
@loogibot 3 месяца назад
The syntax/error highlighting is a bit sensitive, so if one or more parameter is incorrect, some of the others look wrong even if they are valid. To solve this, I did this: The 'buttons' parameter doesn't seem to be working with AlertDialog, so I used 'confirmButton' and 'dismissButton' instead. For 'dismissButton', you can use the 'HideDialog' method from 'ContactEvent'. I hope this helps!
@JavierLopezPR
@JavierLopezPR 2 месяца назад
Same here. 😢 stuck at this part.
@mayank3436
@mayank3436 10 месяцев назад
room is trash i cant get it to work any how error pops up here and there
@daveogfans413
@daveogfans413 8 месяцев назад
lol, maybe the problem is with you...
@raztamim1640
@raztamim1640 9 месяцев назад
room shambles!
@acuity___7369
@acuity___7369 10 месяцев назад
Is there anything more simple ?
@winwingaming9697
@winwingaming9697 Год назад
im 2nd
@tekhiun
@tekhiun 10 месяцев назад
I wonder why we need so much verbosity for such simple things. Compare this to, for example react native, it is like what Java was to Kotlin. Why not just have a function so we can just do by viewModels.into {} dao = db.dao }. I undertand that this was used to avoid using an injection library, but still.... as an old Java dev I get triggered when we have to write 6 lines of code so we can execute only one.
@suntvhits
@suntvhits Год назад
He simply typing No explanation... No use with this video
Далее
100😭🎉 #thankyou
00:28
Просмотров 24 млн
Big Mouse 😂
00:13
Просмотров 100 тыс.
SQLite Database for Android - Full Course
1:28:22
Просмотров 243 тыс.
Understand Angular Signals in 20 Minutes
20:17
Просмотров 6 тыс.
The Full Guide to ANNOTATIONS In Kotlin
21:32
Просмотров 29 тыс.