FindArticles finds the articles the user interested in the new york times. The app utilizes the New york times Database API to search and display articles.
Time spent: A week spent in total
Here's a walkthrough of the app:
I use Java to compelete this Application. The following required functionality is completed:
- User can scroll through all the articles find from the New York Times Database API
- User can Endlessly get the data in the server to find their interested articles.
- User can According to the their interesting topic to show the articles and store these information use preference .
- Even though there is no network available, the user can also see the same articles list as they loaded last time.
- Use the DatePicker to pick the begin date of the articles list.
- User can use SearchView to find their interested articles by using keywords.
- For each article displayed, user can see the details of the articles.
- Use WebView to display the selected article.
- User can share the article's url.
- Layout is optimized with the RecyclerView pattern.
The following optional features are implemented:
- User can swipe-to-refresh latest stream to get the latest articles.
- The lateset articles will be stored in the Realm Database.
- Display a loading indicator during loading.
- Display the empty view for empty results.
- Improved the user interface through styling and coloring.
- Use different view type for article with image and without image.
- Add margin or padding for each elements in article item.
- Custom the background the color of article list.
The following bonus features are implemented:
- Use ViewModel and LiveData to optimize the Architecture.
- Use BindingAdapter and data transform to bind the data and reduce codes.
- Use Realm Database and LiveData to generate our database and get the data in the database.
- Use async-http to fetch the data online.
- Allow user to view details of the article using WebView to show the web page within a separate fragment.
- Use a DialogFragment to show the preference settings.
- Allow users to share the url of the articles.
- Apply the popular Data-binding library to reduce boilerplate code.
- Apply the images of the articles using Glide transformations.
- Use the CardView to show the articles list.
- Use the SwipeRefreshLayout allow user to pull to refresh the articles.
The following additional features are implemented:
- Use Fragment
- Use navigation
- Add launch icon
- Realm Database
- ViewModel
- LiveData
- Glide
- Async Http
- CardView
- Parceler
- Preference
- DatePicker
Copyright 2019 Yini Duanmu
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
