The above image is representative of the 'Feed' page within the Whatbook app. Your task is to replicate this to the best of your ability. Some graphic assets have been included in this repository to aid you in the design.
You will need to make a Network request for the feed items to populate the table (as above) The URL's and associated html header key values are listed below. Please bear in mind that the request retrieves the first 10 'Feed' items and then gives the url for the subsequent page of items. You are to create a method of pulling this extra data on demand (when the table scrolls). You are to persist the data to the device so that offline browsing can occur.
Network GET request URL is as follows:
http://ec2-34-253-186-162.eu-west-1.compute.amazonaws.com/api/v1/feed/?
http header key values
Key: Authorization
Value: Token 344dcc947ac5c258e4354bbf7182a70ed8ac4904
The request returns JSON, this needs to parsed, saved to disk and then displayed in the correct order (using the 'created_at' value from the JSON) of most recent items at the top of the feed.
Whilst you have been given an example of the layout of the feed, we are aware that not all graphical assets for the feed have been provided. We want to see how you as an individual can obtain, cultivate and present the feed as best you can.
We would prefer the challenge to be done using the Kotlin language for the following reasons: Because Kotlin has several features which even modern versions of Java lack.
- Kotlin support best features of functional programming and OO programming language.
- Kotlin handles Null Pointer Exceptions easily.
- Kotlin support lambdas, higher order functions, smart casting.
- Approximately 40 % less number of code lines as compared to Java.
However, if Kotlin is a language you are not yet familiar with please use an alternative but explain the reasons for doing so. We really would like to see Kotlin used so please try.
On completion of the task you will need to forward all sourse code (in zip file) and an .apk file to the email address provided, along with an explanation and rational behind the decisions you made whilst developing this project.