Our HTTP Client is Retrofit, the most popular HTTP library for android. It is simple, clean and scalable and beginner friendly yet powerful.
We will store our data in MySQL database, the most popular RDBMS solution. We use PHP as our server side language. PHP is also the most popular server side language and that's why we chose it.
We have two projects: one written in Kotlin and another in Java.
HTTP Requests will be made asynchronously thus freeing up our UI thread. We will handle different states of our response like the progress state, error state and success state cleanly.
After much research, we've chosen to use RedbeanPHP as it's one of the best PHP ORMs. It is extremely simple, encourages Object Oriented programming and can even generate for us our database and table just based on the design our classes.
ACTIVITIES AND FRAGMENTS
We use activities as our pages. We also have fragments in our listing page. These activities are easy to customize and very independent. All of them share one base class. That base class includes properties and methods common to most or all the other activities. Those properties get derived via Inheritance.
The listings page will include wipe tabs. We achieve this using viewpager. We show our tabs in a tablayout. The first tab will show data only from our hard disk cache. The other tab will show data from our cache as well but it also allows us to refresh our data.
PULL TO REFRESH
If you pull the recyclerview in the second tab in our listings page. Data will be automatically refreshed. This is courtesy of the SwipeRefreshLayout which we wrap around our recyclerview.
LOAD MORE PAGINATION
Our data is downloaded in chunks from the server. Only around 7-10 items get downloaded at a time. This makes the app super fast and efficient. Data is downloaded as the user scrolls. All downlaoded data are added to the cache so that we won't have to re-download them again.
Users can search filter. We include a dialog fragment to provide a complete search experience with highlighted searh results.
In case of any problem, we are available to provide you with full support. Just contact us via the Contacts Form or through my email: email@example.com.