This assignment gives you basically a post list and its detail with comments.๐Ÿš€

Overview

Android Assignment

๐Ÿ“œ Description

This assignment gives you basically a post list and its detail with comments.

๐Ÿ“ฑ Features

  • Users can see random post list.
  • Users can see the comments of the post.

๐Ÿ“ธ Screenshots

Splash Screen Post List Screen Post Detail Screen
Error Screen Missing Data Screen

๐Ÿš€ What the project uses ?

๐Ÿ“ Package Structure

com.okanaydin.assignment    # root package
.
|
โ”œโ”€โ”€ data
โ”‚   โ”€โ”€ remote                 # api calls
โ”‚     โ””โ”€โ”€ models	      # response model
โ”‚     โ””โ”€โ”€ remote data source  # data source
|
โ”œโ”€โ”€ features
โ”‚   โ””โ”€โ”€ core                  # resource handling
โ”‚                 
โ”‚   โ””โ”€โ”€ feature1              # post list
โ”‚     โ””โ”€โ”€ di                  # dependency Injection
โ”‚     โ””โ”€โ”€ repository          # repository
โ”‚     โ””โ”€โ”€ ui                  # fragments, viewModel, viewState, adapters
โ”‚     โ””โ”€โ”€ usecase             # use case
.

โœ๏ธ GitHub Projects

I have created issues for the defined requirements such as features, improvements, and bugs to assign myself and track those issues on the board. Basically, there are three columns which are In-Progress, To-Do, and Done.

๐Ÿƒโ€โ™‚๏ธ GitHub Action

I have implemented GitHub Action for this project and when you create a new pull request it goes to build the project automatically if there is a problem in your build time you can easily see the issue.

License

Copyright 2021 The Android Open Source Project

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

    https://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.
Comments
  • fix some minor issues

    fix some minor issues

    • move BaseFragment to the core package
    • @path(id) is should be non-null in Post Service
    • change variables with 'val' in the data classes, you don't need to re-assignee those
    • change the naming for 'PostDetailRepository' , 'PostDetailUseCase', 'CommentsDiffUtil' and check the other ones
    • create PostViewState
    • @Inject your adapters in Fragments
    • add @androidentrypoint for Splash Screen
    • ViewState classes should be taken non-null parameters
    • change the naming for functions because some of them are not consistent
    bug 
    opened by okanaydin 0
  • fix some minor bugs

    fix some minor bugs

    • move BaseFragment to the core package
    • @Path(id) is should be non-null in Post Service
    • change variables with 'val' in the data classes, you don't need to re-assignee those
    • change the naming for 'PostDetailRepository' , 'PostDetailUseCase', 'CommentsDiffUtil' and check the other ones
    • create PostViewState
    • @Inject your adapters in Fragments
    • add @AndroidEntryPoint for Splash Screen
    • ViewState classes should be taken non-null parameters
    • change the naming for functions because some of them are not consistent
    bug 
    opened by okanaydin 0
  • fix refactoring needs

    fix refactoring needs

    • move BASE_API_URL to Gradle file
    • set build type for Http Logging Interceptor if it is on prod variant don't send logs
    • remove FrameLayout from the activity_main.xml if you don't need to set anything else
    • use web-p format for the image if you can find this format
    • move 'click listener' to 'init' in view holder
    • change the naming 'photoDataSource' with 'photoRemoteDataSource'
    • set an app icon
    • remove Glide implementation
    improvement 
    opened by okanaydin 0
  • improvement project

    improvement project

    • update splash screen with animation listener
    • update recyclerview with ListAdapter
    • implement moshi
    • check whole error states and create view state for post screen
    • update view models
    • update naming for data source
    improvement 
    opened by okanaydin 0
  • Feature/Post detail

    Feature/Post detail

    • add new end-point for comments
    • implement data-source for comments
    • create a new repository for comments
    • create use-case for comments
    • create viewModel for comments
    • pass data from PostList to the detail page with safeArgs
    • create an adapter for comments
    feature 
    opened by okanaydin 0
  • Feature/Post-List

    Feature/Post-List

    • implement required libraries for fetching data from the remote server
    • refactoring remote data sources
    • add an api layer for services
    • prepare data source for the posts and photos
    • create repository for post list
    • create post module
    • create remote data module
    • create generic resource for the data status
    • create use-case for post list
    • create viewmodel for post list
    • refactoring to naming for response models
    • pass the data from viewModel to Activity and fix some minor issues
    feature 
    opened by okanaydin 0
Owner
Okan AYDIN
Android Developer @citizenme
Okan AYDIN
Android implementation of FlowLayout. Layout arranges its children in multiple rows depending on their width.

FlowLayout FlowLayout is an opensource Android library that alows developers to easily integrate flow layout into their app. FlowLayout is an layout t

Blaลพ ล olar 754 Dec 15, 2022
Android - A layout that arranges its children in relation to a background image

ImageLayout A layout that arranges its children in relation to a background image. The layout of each child is specified in image coordinates (pixels)

Manuel Peinado Gallego 419 Nov 14, 2022
Linear layout, that wrap its content to the next line if there is no space in the current line.

Android flow layout Introduction Extended linear layout that wrap its content when there is no place in the current line. [] (https://travis-ci.org/Ap

Artem.Votincev 2k Jan 5, 2023
You donโ€™t want your apps look and feel boring, do you? Add some bubbles!

#BubbleAnimationLayout Say hello to Bubble Animation Layout for Android by Cleveroad You donโ€™t want your apps look and feel boring, do you? Add some b

Cleveroad 576 Nov 23, 2022
A library for showing different types of layouts when a list view is empty

Android Empty Layout Please note that this project is not being maintained now. Hopefully a new version will be available soon. A library for showing

Raquib-ul Alam (Kanak) 606 Nov 26, 2022
This library provides a simple way to add a draggable sliding up panel (popularized by Google Music and Google Maps) to your Android application. Brought to you by Umano.

Note: we are not actively responding to issues right now. If you find a bug, please submit a PR. Android Sliding Up Panel This library provides a simp

Umano: News Read To You 9.4k Dec 31, 2022
VoronoiView is a view (ViewGroup) that allows you to add and display views inside Voronoi diagram regions.

Vorolay VoronoiView is a view (ViewGroup) that allows you to add and display views inside Voronoi diagram regions. [Voronoi diagram] (https://en.wikip

Daniil Jurjev 918 Dec 4, 2022
ConstraintLayout is an Android layout component which allows you to position and size widgets in a flexible way

ConstraintLayout is a layout manager for Android which allows you to position and size widgets in a flexible way. It's available for both the Android view system and Jetpack Compose.

Android Jetpack 970 Jan 6, 2023
An Android library that help you to build app with swipe back gesture.

SwipeBackLayout An Android library that help you to build app with swipe back gesture. Demo Apk GooglePlay Requirement The latest android-support-v4.j

ike_w0ng 6.1k Dec 29, 2022
A library that easily allows you to mask layouts/viewgroups

Maskable Layout Overview ======================= The Maskable Layout is a simple framelayout that allows you to easily mask views and viewgroups. You

Christophe Smet 654 Dec 2, 2022
A 3D Layout for Android,When you use it warp other view,it can became a 3D view,ไธ€็ง’่ฎฉไฝ ็š„viewๆ‹ฅๆœ‰3Dๆ•ˆๆžœ๏ผ

ThreeDLayout A 3D Layout,When you use it warp other view,it can became a 3D view ไธญๆ–‡ๆ–‡ๆกฃ preview USAGE 1.compile library allprojects { repositories {

androidwing 490 Oct 27, 2022
It's an Android library that allows you to use Layout as RadioButton or CheckBox.

Android - CompoundLayout It's an Android library that allows you to use Layout as RadioButton or CheckBox. The librarie is Android 14+ compatible. Gra

null 483 Nov 25, 2022
An Android library that help you to build app with swipe back gesture.

SwipeBackLayout An Android library that help you to build app with swipe back gesture. Demo Apk GooglePlay Requirement The latest android-support-v4.j

ike_w0ng 6.1k Jan 3, 2023
FixedHeaderTableLayout is a powerful Android library for displaying complex data structures and rendering tabular data composed of rows, columns and cells with scrolling and zooming features. FixedHeaderTableLayout is similar in construction and use as to Android's TableLayout

FixedHeaderTableLayout is a powerful Android library for displaying complex data structures and rendering tabular data composed of rows, columns and cells with scrolling and zooming features. FixedHeaderTableLayout is similar in construction and use as to Android's TableLayout

null 33 Dec 8, 2022
null 2.4k Dec 30, 2022
TileView is a subclass of android.view.ViewGroup that asynchronously displays, pans and zooms tile-based images. Plugins are available for features like markers, hotspots, and path drawing.

This project isn't maintained anymore. It is now recommended to use https://github.com/peterLaurence/MapView. MapView is maintained by Peter, one of o

Mike Dunn 1.5k Nov 21, 2022
Implementation of ExpandableListview with custom header and custom content.

ExpandableLayout ExpandableLayout provides an easy way to create a view called header with an expandable view. Both view are external layout to allow

Robin Chutaux 1.6k Dec 12, 2022
[Archived] Highlight the best bits of your app to users quickly, simply, and cool...ly

ShowcaseView The ShowcaseView (SCV) library is designed to highlight and showcase specific parts of apps to the user with a distinctive and attractive

Alex Curran 5.6k Dec 16, 2022