
Learn Full app Kotlin Android development involving several technologies.
CONCEPTS YOU WILL LEARN FROM THIS PROJECT
Kotlin Programming Language
Retrofit2(Latest version) - Multipart Uploads,Update,Downloads,Delete
Object Oriented PHP + MySQL
RedbeanPHP
Memory and LRU Disk Caching
Server side Pagination
Capture images from camera,gallery,file picker and upload
Several Page designs (Splash,Dashboard,CRUD,Listings,Detail)
Swipeable Image slider - Carousel
Runtime Permissions implemented
Implement ClearText communication(Communication over non-secure http)
Highly efficient app creation(We make single requests to server,cache data in both disk and memory,download data in small chunks)
This is the second app we create. In this part we will learn how to perform multipart uploads/update/delete/download. In short a full CRUD application but with images and text. User can pick images, type text then upload. Users can also view, edit and delete as well as search. This is a perfect template to use if you plan on using mysql with android especially as there aren't many online courses and tutorials that put it all together in an easy to follow manner.
FEATURES
UPLOAD/DOWNLOAD/UPDATE/DELETE images and text to the server using Retrofit2
Capture Photos directly from camera and upload.
Replace existing images and text with new ones.
Paginate data using load more technique. Control how many items you want per page.
Beautiful UI with many activities already designed and working well.
Show amazing image carousel/slider at the top of your recyclerview. The slider autoslides images. Images can also be swiped manually.
Runtime permissions integrated.
ClearText communication implemented. This implies it will support even non-https traffic.
Updates almost every month. We keep on adding features and improving the app.
Suggest us features you want integrated.
More coming.
This is the first app we create. We do this in detail. It is perfect for absolute beginners. You will know how to create a full application that you can use to as a template in creating other apps. You can download the APK and test it. We are hosting a online test mysql database to start with.
This is a gift for you because you are dear to me. You've bought my courses so I have to give you some extras. This is an app that I have created and it's play store ready. Use it to learn the following:
Kotlin Programming Language
Clean Architecture
Room
LiveData
ExpandableRecyclerView with images and text
Single Page design
Am trying to say thank for purchasing my course by creating this project for you. This project is meant to teach you:
Room Data Access Layer - Full CRUD
Model View ViewModel
LiveData
How to import data from csv to room
CarouselView
Page creation and designs
It is basically a template. Be creative and turn it into your own idea app.
We have added a full music player that relies on no dependency and instead uses media player. It will teach you how to create a full music player ready for play store. You will also learn the following:
Kotlin full app development
Mediaplayer api usage
Model View ViewModel
Cheers.
Am showing you the preview of the app we will create in this course. In the process we will learn alot including but not limited to:
How to use Retrofit to perform all the CRUD(Create Read Update Delete) operations against a mysql database. We do this by making HTTP POST and GET requests asynchronously. While performing this we show progressbar and handle response appropriately.
How to perform a sever side search against our data and render the result in a recyclerview. I also teach you how to highlight search results. We render as searchview in the toolbar which the user can then use to search.
How to perform a server side pagination using the load more technique. For this we will see how to listen to RecyclerView scroll events to assist us in pagination.
How to create several re-usable screens using XML in android studio. These screens will include splash screen, dashboard screen, listing screen, details screen and editing screen. In the process we use several widgets like cardviews, datepickers, lovely dialogs etc.
How to write quality Object Oriented PHP code that can listen, interpret our requests and return us a response which we can then process.
How to use custom professional fonts in your android app. The fonts can be applied as per widget, per activity or to the whole application.
This part is for you if you haven't used XAMPP before. I show you how to download XAMPP. XAMPP remember is our localhost server and will come packaged with Apache and MySQL.
This part is also for students who haven't used XAMPP before. Once you've downloaded and installed XAMPP, I show you how to start Apache and MySQL and explain what the two do for us.
This is part is for students who are not sure how to create a mysql database. We use a tool called PHPMyAdmin. This tool comes packaged with our XAMPP or WAMP server and allows us easily and visually create databases and tables. Am showing you how to do that in this lecture.
In this class am showing you how to create an index.php file. It is onto these file that we will write all our PHP code. Am also showing you where to create the file. Am explaining and showing what htdocs folder is for XAMPP.
We are starting serious business right in this lecture. Realtime coding. After this lecture you will know how to create a Constants class in PHP to hold database credentials.
In this class we are creating another class. This class will hold all our CRUD methods. After this lesson you will know how to create a re-usable method to establish a connection to MySQL database and return a mysqli instance. This method will be used by other methods to establish connection.
Am teaching you how to insert data into mysqli database from PHP in an object oriented way. Am also showing you how to receive data sent via HTTP POST request from a client. Am teaching you also how to handle several responses based on the success/failure our insertion attempt.
After this class you will know how to:
Receive data sent from a HTTP POST request by client.
Write SQL statement for updating data.
Encode an array into JSONObject that we then send to the client as a response for it's update request.
In this class we delete data from mysql. After this class you will know how to:
Receive the id of the row to be deleted.
Write an SQL statement for deleting data, including that id.
Execute our delete query.
Send a response to the client based in success or failure.
Am teaching you how to select all data/rows from mysql table using PHP. After this class you will know how to:
Write SQL select all statement and Execute it.
Hold the result in an array and alongside a response code and message.
JSON Encode that result into a JSON Object and print it out for the client.
In this class we write one method that will do for us both search and pagination in mysql. After this class you will be able to:
Receive search Query and Pagination parameters from the client.
Apply these into a SQL statement, against multiple columns as for the search.
Return a response to the client based on his search and pagination requests.
We write a method to act as our controller. After this class you will be able to:
Listen to incoming HTTP requests, categorize them and call the appropriate method.
In this class we perform a simple HTTP GET request test. By doing this we will be able to ascertain that atleast our database credentials are correct and we can move then to android.
In this lesson we create an android studio project. After this class you will be able to:
Create an empty android studio java project.
This lesson is all about gradle and our app's dependencies. I talk about all the libraries we will use and why. After this lesson you will be able to:
Install dependencies into your project.
Know about certain android libraries and why to use them.
Here we basically add drawables/images into our drawables directory. These are the images and icons we will use in our project.
In this class we create the menu items we will show in our toolbars. Then later on when those menu items are clicked/selected we will see how to handle those events and perform certain operations
This class is all about our value resources. These resources include:
Colors - many color definitions in their Hex format. We will use these in several places in our app like toolbars and backgrounds.
Strings - The static strings like the app name.
Styles - I tell you how to create custom styles by deriving from existing styles.
Arrays - To hold our array of colors. We will use this array in our adapter to set random backgrounds to our material letter icon.
The video tells you the objectives we will aim to achieve practically. That is am showing you the part of the app that this section will allow us create.
How to add custom fonts in the assets folder. Then we will load the font that we want to use globaly(default font) in our next class.
In this lesson we cover the App class. This is a global class to our android app and is actually an android component. I show you how to initialize Calligraphy in this class.
This is a preview of this section's Objectives, visually. Basically the splash screen we will be creating and how it works visually.
After this class you will learn:
How to design a splash screen in XML.
After this class you will learn:
Load animations using the static loadAnimation method of the Animation class.
How to apply the top to bottom and fade animations to imageview and textview respectively.
How to sleep a thread for a custom amount of time then open our dashboard page.
I had told you that we will be performing CRUD operations. These operations I said are very fast and work smoothly. I said we are using Retrofit as our HTTP Client. This is a preview of how those operations work visually in this app before we sink into coding them.
We first need to define our model class. This is our data object or java bean if you like. Here I show you how to:
Make a class/object serializeable using the Serializeable interface in the java.io package.
I explain why we are making it serializeable.
I show and explain the @SerializedName attribute, and why we decorate our model fields with it.
We code this interface to define methods that will act as our RestAPI methods. We use special Retrofit attributes to designate them HTTP request types. These method include:
Method for retrieving data via HTTP GET request.
Method for inserting data via HTTP POST request.
Method for updating data via HTTP POST request.
Method for deleting data via HTTP request.
Method for searching and pagination data via HTTP POST request.
We pass them fields to be sent to the server, however they are abstract and we use special Retrofit attributes to empower them.
Am spending these 9 minutes showing you visually some of the features our utility methods will perform for us. Those methods will be static will be re-usable throughout the application. This saves us time and from typing repetitive code.
Let's create our Utils class to hold those methods. Then am showing you how to obtain your computer's ip address and some of the addresses you can use as well depending on the emulator you are using for testing the app.
In this class you learn:
How to instantiate Retrofit and assign it a converter factory.
What is a converter factory and why it.
In this class you learn:
How to create a utility method to show us Toast messages throughout our app.
How to validate edittexts throughout the whole app using one method.
In this class you learn how to open another activity.
Am showing you in this class how to:
Create a re-usable Materrial Dialog using the LovelyDialogs library. This is an info dialog to show any information including errors throughout our app.
In this class you will learn:
How to create a re-usable material single choice dialog. That dialog allows users to select one item from an arbitrary number of items in a list. Then the selected item gets automatically displayed in an edittext.
Here am showing you how to:
Convert a string into a date safely without crashing the app.
Here am creating two static re-usable methods showing you:
How to send a serialized object to another activity.
How to receive the serialized object and deserialize it.
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.