App: A news reader app which lets users search the New York times article database and read articles.
- User can enter a search query that will display a grid of news articles using the thumbnail and headline from the New York Times Search API. (3 points)
- User can click on "settings" which allows selection of advanced search options to filter results. (3 points)
- User can configure advanced search filters such as: (points included above) Begin Date (using a date picker) News desk values (Arts, Fashion & Style, Sports) Sort order (oldest or newest)
- Subsequent searches will have any filters applied to the search results. (1 point)
- User can tap on any article in results to view the contents in an embedded browser. (2 points)
- User can scroll down "infinitely" to continue loading more news articles. The maximum number of articles is limited by the API search. (1 point)
- Robust error handling, check if internet is available, handle error cases, network failures. (1 point)
- Use the ActionBar SearchView or custom layout as the query box instead of an EditText. (1 point)
- User can share a link to their friends or email it to themselves. (1 point)
- Replace Filter Settings Activity with a lightweight modal overlay. (2 points)
- Improve the user interface and experiment with image assets and/or styling and coloring (1 to 3 points depending on the difficulty of UI improvements)
- Use the RecyclerView with the StaggeredGridLayoutManager to display improve the grid of image results (see Picasso guide too). (2 points)
- For different news articles that only have text or have text with thumbnails, use Heterogenous Layouts with RecyclerView. (2 points)
- Apply the popular ButterKnife annotation library to reduce view boilerplate. (1 point)
- Use Parcelable instead of Serializable using the popular Parceler library. (1 point)
- Leverage the popular GSON library to streamline the parsing of JSON data. (1 point)
- Replace Picasso with Glide for more efficient image rendering. (1 point)
- ButterKnife Annotation library to reduce view boilerplate
- Glide Image downloading and caching library
- OKHttp Networking
- Parceler Android Parcelables made easy through code generation