NYTimesSearch is an android app that allows a user to search for articles on web using simple filters. The app utilizes New York Times Search API.
Time spent: 8 hours spent in total
The following required functionality is completed:
- [x ] User can search for news article by specifying a query and launching a search. Search displays a grid of image results from the New York Times Search API.
- [x ] User can click on "settings" which allows selection of advanced search options to filter results
- [x ] User can configure advanced search filters such as:
- [x ] Begin Date (using a date picker)
- [x ] News desk values (Arts, Fashion & Style, Sports)
- [x ] Sort order (oldest or newest)
- [x ] Subsequent searches have any filters applied to the search results
- [x ] User can tap on any image in results to see the full text of article full-screen
- [x ] User can scroll down to see more articles. The maximum number of articles is limited by the API search.
The following optional features are implemented:
- Implements robust error handling, check if internet is available, handle error cases, network failures
- [x ] Used the ActionBar SearchView or custom layout as the query box instead of an EditText
- [x ] User can share an article link to their friends or email it to themselves
- [x ] Replaced Filter Settings Activity with a lightweight modal overlay
- [x ] Improved the user interface and experiment with image assets and/or styling and coloring
The following bonus features are implemented:
- Use the RecyclerView with the
StaggeredGridLayoutManager
to display improve the grid of image results - For different news articles that only have text or only have images, use Heterogenous Layouts with RecyclerView
- Apply the popular Butterknife annotation library to reduce view boilerplate.
- [x ] Use Parcelable instead of Serializable using the popular Parceler library.
- Leverages the data binding support module to bind data into layout templates.
- [x ] Replace all icon drawables and other static image assets with vector drawables where appropriate.
- [x ] Replace Picasso with Glide for more efficient image rendering.
- Uses retrolambda expressions to cleanup event handling blocks.
- Leverages the popular GSON library to streamline the parsing of JSON data.
- Leverages the Retrofit networking library to access the New York Times API.
The following additional features are implemented:
- [x ] Used a placeholder vector for articles that don't have an image, to keep a consistent look.