LATEST PROJECT - Retrofit CRUD Multipart Image Upload/Download
Making any type of Software is all about data manipulation, be it pixels, images, text. Being able to write to and read from a database is therefore of paramount importance if you desire to create any meaningful app. Unfortunately there are surprisingly not many android tutorials online that give you an all in one solution for this.
I have been making apps for several NGOs here in Nairobi,Kenya and mostly I use MySQL, sometimes Firebase. Hence I have decided to produce a course to make working with MySQL and performing HTTP requests as easy as possible yet robust enough to be used in production.
Main Things You Will Learn
This course aims to teach you the following:
How to Perform all CRUD operations against MySQL: INSERT SELECT UPDATE DELETE.
How to perform a fast server side search and pagination.
How to use retrofit as all in one solution HTTP Client to make HTTP Requests in the background thread.
How to write Object Oriented quality PHP code to perform CRUD, search and pagination for students coming from Java background who find most PHP code in the web weird and dirty looking.
How to design and incorporate splash screen, dashboard, detail pages, data entry pages and listing pages into a an app.
How to Create a reusable real world app template that can be modified by inexperienced programmers.
The process of coding a full app in realtime.
My Style of Teaching
I have done many tutorials in YouTube in Java,Android and C# mainly, so am able to take students through a full course, covering everything, emphasizing important part yet moving at an amazing peace.
My courses assume no experience at all in app creation. Maybe my only assumption is that you can install android studio. Hence beginners can find this course very important. Intermediates can also benefit from this course as we cover several intermediate topics like Making HTTP requests and achieving pagination and search highlighting.
We code line by line and at the same time narrate and explain. We explain method by method.
What Can I create after this course?
Any app that involves CRUD. Your imagination is your limit.
For example recently I have used this template to create for a client an app. I will also be using this as a template to create other mysql apps as well as Firebase. Hence if you follow this course keenly, you will be able to create any type of app that involves CRUD.
Your app will be able to perform reliably in production. Your app won't crush as we have handled exceptions reliably. For example if there is no connection or user enters wrong data. A beautiful dialog gets shown to the user informing of him of the error.
The app will be very fast, no matter how many hundreds of thousands or millions of rows you have. This is because the app doesn't download all data at once. Instead short HTTP requests are made as the user scrolls through the recyclerview. The pagination takes place at the database engine level which is heavily optimized. The client downloads just a small chunk of data weighing a few bytes.
Your users will be able to take advantage of a search feature that doesn't slow your app. This because the search also occurs at the database level. This is a multi-column search, hence you can add as many columns in as you want. I have used two columns as an example in this app.
What if I don't know PHP? How will I maintain the app?
Well you are in luck. The PHP code is the easiest to understand code you will ever find especially if you are a Java/C#/Python developer. It's completely Object Oriented and is written in a single file. That file has only two classes. One class where you add the database credentials and the other class performs all the CRUD operations. All you will need to do is replace the table name and database name.
What Technologies does this course teach and Why?
The technologies that we use to create this simple app. And we cover them in a practical manner by coding.
1. Retrofit
We use it as our HTTP Client. It takes advantage of GSON as a dependency, using it to map our JSON data to our model classes. Thus this saves us from having to use JSONArray and JSONObjects to parse our JSON data.
Moreover Retrofit allows us uniquely map our HTTP requests using an interface. This gives us a higher level of abstraction and makes our code maintenable and clean.
We use it's enqueue method to queue and asynchronously send our HTTP requests. Thus we are liberated from having to deal with AsyncTasks here and there.
Retrofit also allows us abstract our response from the server easily in a response model class. Moreover handling of Failure is abstracted away for us, thus we only have to log or show the exception message. No more try--catch blocks.
2. RecyclerView
It's the most powerful adapterview in android. It's more powerful and flexible than ListView. We rely on it's onScroll events to do our pagination.
We will use it almost all our upcoming courses.
3. CollapsingToolbarLayout
It's great and beautiful. It allows us show an image on top. It gives our app material design feel.
4. LovelyDialogs
Rather than showing exceptions and warnings in toasts, we use the lovely dialogs. I will use this library in many of my upcoming courses. It's beautiful and is easy to wrap in a utility method that can then be invoked from anywhere.
Moreover it gives almost 4 dialog options: info,single-choice,multi-choice and input. It allows us easily align the dialog contents, control number of buttons shown, assign custom dialog images and handle onclick events.
5. Calligraphy
For your app to dominate play store you need the app to feel and taste nice. Fonts will make massively help with that. However not old fonts like sans serif and Times New Roman. We need custom fonts. Those you can download from the web.
Calligraphy is the best custom font library. I show you how to use it to load any font throughout your app or in individual widgets.
Do you provide support?
Obviously. I come from a YouTube background so am used to providing support to my students. I also welcome suggestions to improve myself as I enjoy learning, sharing and growing.