From 5c8e34ebc8a30ddabc6f1e7817d9715ef846dfc4 Mon Sep 17 00:00:00 2001 From: AtomAgenda Date: Tue, 4 Jul 2017 09:54:43 +0530 Subject: [PATCH 1/2] RestAPI Done :D --- .idea/modules.xml | 2 +- app/build.gradle | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.idea/modules.xml b/.idea/modules.xml index 1b3ccab..c8978b2 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index b963ad0..e48d443 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,12 +3,12 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { - compileSdkVersion 26 + compileSdkVersion 25 buildToolsVersion "25.0.2" defaultConfig { applicationId "com.codingblocks.restapiretrofitjson" minSdkVersion 16 - targetSdkVersion 26 + targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" @@ -27,10 +27,10 @@ dependencies { exclude group: 'com.android.support', module: 'support-annotations' }) compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" - compile 'com.android.support:appcompat-v7:26.+' - compile 'com.android.support:recyclerview-v7:26.+' - compile 'com.android.support:cardview-v7:26.+' - compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha8' + compile 'com.android.support:appcompat-v7:25.+' + compile 'com.android.support:recyclerview-v7:25.+' + compile 'com.android.support:cardview-v7:25.+' + compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'com.squareup.retrofit2:converter-gson:2.3.0' testCompile 'junit:junit:4.12' From 685b7289a35d61e179ad8893c2fb5ff26136cf3c Mon Sep 17 00:00:00 2001 From: AtomAgenda Date: Tue, 4 Jul 2017 18:44:46 +0530 Subject: [PATCH 2/2] RestAPI Donegit add -A! :D --- AndroidSample_Retrofit_RESTAPI | 1 + app/build.gradle | 2 + app/src/main/AndroidManifest.xml | 3 + .../activities/AlbumsActivity.kt | 56 ++++++++++++++++ .../activities/CommentsActivity.kt | 18 ++--- .../activities/PicsActivity.kt | 64 ++++++++++++++++++ .../activities/TodosActivity.kt | 16 +++-- .../activities/ViewSpecificPic.kt | 27 ++++++++ .../adapters/AlbumAdapter.kt | 61 +++++++++++++++++ .../adapters/PicsAdapter.kt | 65 +++++++++++++++++++ .../adapters/TodoAdapter.kt | 7 +- .../restapiretrofitjson/api/API.java | 12 ++++ .../restapiretrofitjson/api/AlbumsAPI.java | 38 +++++++++++ .../interfaces/ClickOnPicListener.java | 11 ++++ .../restapiretrofitjson/models/Album.kt | 11 ++++ .../restapiretrofitjson/models/Pic.kt | 12 ++++ app/src/main/res/layout/activity_albums.xml | 34 ++++++++++ app/src/main/res/layout/activity_comments.xml | 2 +- app/src/main/res/layout/activity_main.xml | 18 +++++ app/src/main/res/layout/activity_pics.xml | 19 ++++++ .../main/res/layout/activity_specific_pic.xml | 26 ++++++++ app/src/main/res/layout/activity_todos.xml | 8 ++- app/src/main/res/layout/list_item_album.xml | 24 +++++++ app/src/main/res/layout/list_item_comment.xml | 60 +++++++++-------- app/src/main/res/layout/list_item_pics.xml | 32 +++++++++ app/src/main/res/layout/list_item_post.xml | 44 ++++++++----- app/src/main/res/layout/list_item_todo.xml | 39 ++++++++--- app/src/main/res/layout/list_item_user.xml | 7 +- 28 files changed, 644 insertions(+), 73 deletions(-) create mode 160000 AndroidSample_Retrofit_RESTAPI create mode 100644 app/src/main/java/com/codingblocks/restapiretrofitjson/activities/AlbumsActivity.kt create mode 100644 app/src/main/java/com/codingblocks/restapiretrofitjson/activities/PicsActivity.kt create mode 100644 app/src/main/java/com/codingblocks/restapiretrofitjson/activities/ViewSpecificPic.kt create mode 100644 app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/AlbumAdapter.kt create mode 100644 app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/PicsAdapter.kt create mode 100644 app/src/main/java/com/codingblocks/restapiretrofitjson/api/AlbumsAPI.java create mode 100644 app/src/main/java/com/codingblocks/restapiretrofitjson/interfaces/ClickOnPicListener.java create mode 100644 app/src/main/java/com/codingblocks/restapiretrofitjson/models/Album.kt create mode 100644 app/src/main/java/com/codingblocks/restapiretrofitjson/models/Pic.kt create mode 100644 app/src/main/res/layout/activity_albums.xml create mode 100644 app/src/main/res/layout/activity_pics.xml create mode 100644 app/src/main/res/layout/activity_specific_pic.xml create mode 100644 app/src/main/res/layout/list_item_album.xml create mode 100644 app/src/main/res/layout/list_item_pics.xml diff --git a/AndroidSample_Retrofit_RESTAPI b/AndroidSample_Retrofit_RESTAPI new file mode 160000 index 0000000..5c8e34e --- /dev/null +++ b/AndroidSample_Retrofit_RESTAPI @@ -0,0 +1 @@ +Subproject commit 5c8e34ebc8a30ddabc6f1e7817d9715ef846dfc4 diff --git a/app/build.gradle b/app/build.gradle index e48d443..7855ada 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -33,7 +33,9 @@ dependencies { compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'com.squareup.retrofit2:converter-gson:2.3.0' + compile 'com.squareup.picasso:picasso:2.5.2' testCompile 'junit:junit:4.12' + } repositories { mavenCentral() diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 363fe63..9816683 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -14,6 +14,9 @@ + + + diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/AlbumsActivity.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/AlbumsActivity.kt new file mode 100644 index 0000000..dc0551e --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/AlbumsActivity.kt @@ -0,0 +1,56 @@ +package com.codingblocks.restapiretrofitjson.activities + +import android.content.Intent +import android.os.Bundle +import android.support.v7.app.AppCompatActivity +import android.support.v7.widget.LinearLayoutManager +import android.view.View +import com.codingblocks.restapiretrofitjson.R +import com.codingblocks.restapiretrofitjson.adapters.AlbumsAdapter +import com.codingblocks.restapiretrofitjson.api.API +import com.codingblocks.restapiretrofitjson.interfaces.OnItemClickListener +import com.codingblocks.restapiretrofitjson.models.Album + +import kotlinx.android.synthetic.main.activity_albums.* +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response +import java.util.* + +class AlbumsActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_albums) + + rvAlbumsView.layoutManager = LinearLayoutManager(this) + val albumsAdapter = AlbumsAdapter(ArrayList(), this) + rvAlbumsView.adapter = albumsAdapter + pbProgress.visibility = View.VISIBLE + btnShowAllPhotos.setOnClickListener { startActivity(Intent(this@AlbumsActivity, PicsActivity::class.java)) } + albumsAdapter.setOnItemClickListener(OnItemClickListener { itemid, view -> + val i = Intent(this@AlbumsActivity, PicsActivity::class.java) + i.putExtra("albumId", itemid) + startActivity(i) + }) + val receivedId = intent.getIntExtra("userId", -1) + supportActionBar!!.title = "Albums" + val albumsApi = API.getInstance().albumsAPI + val receiveAlbums = object : Callback> { + override fun onResponse(call: Call>, response: Response>) { + albumsAdapter.updateAlbums(response.body()!!, pbProgress) + } + + override fun onFailure(call: Call>, t: Throwable) { + + } + } + + if (receivedId != -1) { + albumsApi.getAlbumsbyUserId(receivedId).enqueue(receiveAlbums) + } else { + albumsApi.getAlbumsbyUserId(null).enqueue(receiveAlbums) + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/CommentsActivity.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/CommentsActivity.kt index a5607aa..9c5ad48 100644 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/CommentsActivity.kt +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/CommentsActivity.kt @@ -30,14 +30,14 @@ class CommentsActivity : AppCompatActivity() { API.getInstance().commentsAPI.getCommentsByPostId(intent.getIntExtra("postId", 0)) .enqueue(object : Callback> { - override fun onFailure(call: Call>?, t: Throwable?) { - // - } - - override fun onResponse(call: Call>?, response: Response>?) { - // - commentAdapter.updateComments(response!!.body()!!) - } - }) + override fun onFailure(call: Call>?, t: Throwable?) { + // + } + + override fun onResponse(call: Call>?, response: Response>?) { + // + commentAdapter.updateComments(response!!.body()!!) + } + }) } } diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/PicsActivity.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/PicsActivity.kt new file mode 100644 index 0000000..37fadea --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/PicsActivity.kt @@ -0,0 +1,64 @@ +package com.codingblocks.restapiretrofitjson.activities + +/** + * Created by Arunima Mitra on 03-07-2017. + */ + +import android.content.Intent +import android.os.Bundle +import android.support.v7.app.AppCompatActivity +import android.support.v7.widget.LinearLayoutManager +import android.view.View +import com.codingblocks.restapiretrofitjson.R +import com.codingblocks.restapiretrofitjson.adapters.PicsAdapter +import com.codingblocks.restapiretrofitjson.api.API +import com.codingblocks.restapiretrofitjson.interfaces.ClickOnPicListener + +import com.codingblocks.restapiretrofitjson.models.Pic + +import kotlinx.android.synthetic.main.activity_pics.* +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response +import java.util.* + +class PicsActivity : AppCompatActivity() { + + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_pics) + rvPhotosView.layoutManager = LinearLayoutManager(this) + val photosAdapter = PicsAdapter(ArrayList(), this) + rvPhotosView.adapter = photosAdapter + pbProgress.visibility = View.VISIBLE + + photosAdapter.setOnPhotoClickListener(ClickOnPicListener { url, title -> + val i = Intent(this@PicsActivity, ViewSpecificPic::class.java) + i.putExtra("url", url) + i.putExtra("title", title) + startActivity(i) + }) + + val receivedId = intent.getIntExtra("albumId", -1) + + supportActionBar!!.title = "Photos" + + val photosApi = API.getInstance().photosApi + + val receivePhotos = object : Callback> { + override fun onResponse(call: Call>, response: Response>) { + photosAdapter.updateAlbums(response.body()!!, pbProgress) + } + + override fun onFailure(call: Call>, t: Throwable) { + + } + } + if (receivedId != -1) { + photosApi.getPhotosOfAlbumId(receivedId).enqueue(receivePhotos) + } else { + photosApi.photos.enqueue(receivePhotos) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/TodosActivity.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/TodosActivity.kt index b7c7813..41d1b41 100644 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/TodosActivity.kt +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/TodosActivity.kt @@ -1,16 +1,14 @@ package com.codingblocks.restapiretrofitjson.activities -import android.support.v7.app.AppCompatActivity import android.os.Bundle +import android.support.v7.app.AppCompatActivity import android.support.v7.widget.LinearLayoutManager -import android.util.Log - -import kotlinx.android.synthetic.main.activity_todos.* - +import android.view.View import com.codingblocks.restapiretrofitjson.R import com.codingblocks.restapiretrofitjson.adapters.TodoAdapter import com.codingblocks.restapiretrofitjson.api.API import com.codingblocks.restapiretrofitjson.models.Todo +import kotlinx.android.synthetic.main.activity_todos.* import retrofit2.Call import retrofit2.Callback import retrofit2.Response @@ -24,25 +22,29 @@ class TodosActivity : AppCompatActivity() { rvTodosList.layoutManager = LinearLayoutManager(this) var todoAdapter = TodoAdapter(ArrayList()) rvTodosList.adapter = todoAdapter + pbProgress.visibility = View.VISIBLE var todoCallback = object: Callback> { override fun onFailure(call: Call>?, t: Throwable?) { } override fun onResponse(call: Call>?, response: Response>?) { - todoAdapter.updateTodos(response!!.body()!!) + todoAdapter.updateTodos(response!!.body()!!,pbProgress) } } var userId = intent.getIntExtra("userId", -1) + var username=intent.getStringExtra("username") if (userId != -1) { API.getInstance().todosAPI.getTodos(userId).enqueue(todoCallback) + supportActionBar!!.title="Todos by "+username } else { API.getInstance().todosAPI.getTodos(null).enqueue(todoCallback) + supportActionBar!!.title="Todos" } } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/ViewSpecificPic.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/ViewSpecificPic.kt new file mode 100644 index 0000000..be82f94 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/ViewSpecificPic.kt @@ -0,0 +1,27 @@ +package com.codingblocks.restapiretrofitjson.activities + +/** + * Created by Arunima Mitra on 03-07-2017. + */ + +import android.os.Bundle +import android.support.v7.app.AppCompatActivity +import com.codingblocks.restapiretrofitjson.R +import com.squareup.picasso.Picasso +import kotlinx.android.synthetic.main.activity_specific_pic.* + +class ViewSpecificPic : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_specific_pic) + val url = intent.getStringExtra("url") + val title = intent.getStringExtra("title") + + supportActionBar!!.title = "View Photo" + + tvTitle.text = title + Picasso.with(this).load(url) + .into(ivImage) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/AlbumAdapter.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/AlbumAdapter.kt new file mode 100644 index 0000000..f355b03 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/AlbumAdapter.kt @@ -0,0 +1,61 @@ +package com.codingblocks.restapiretrofitjson.adapters + +/** + * Created by Arunima Mitra on 03-07-2017. + */ + +import android.content.Context +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ProgressBar +import com.codingblocks.restapiretrofitjson.R +import com.codingblocks.restapiretrofitjson.interfaces.OnItemClickListener +import com.codingblocks.restapiretrofitjson.models.Album +import kotlinx.android.synthetic.main.list_item_album.view.* +import java.util.* + +/** + * Created by pervy_sage on 30/6/17. + */ + +class AlbumsAdapter(internal var albums: ArrayList, internal var mContext: Context) : RecyclerView.Adapter() { + + internal var onItemClickListener: OnItemClickListener? = null + fun setOnItemClickListener(onItemClickListener: OnItemClickListener) { + this.onItemClickListener = onItemClickListener + } + + fun updateAlbums(albums: ArrayList, progressBar: ProgressBar) { + + this.albums = albums + progressBar.visibility = View.INVISIBLE + progressBar.visibility = View.GONE + notifyDataSetChanged() + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AlbumsViewHolder { + val li = mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater + val itemView = li.inflate(R.layout.list_item_album, parent, false) + return AlbumsViewHolder(itemView) + } + + override fun onBindViewHolder(holder: AlbumsViewHolder, position: Int) { + holder.bindAlbum(albums[position]) + } + + override fun getItemCount(): Int { + return albums.size + } + + inner class AlbumsViewHolder(internal var rootView: View) + : RecyclerView.ViewHolder(rootView) { + fun bindAlbum(thisAlbum : Album){ + rootView.tvTitle.text=thisAlbum.title + rootView.setOnClickListener { + onItemClickListener!!.onItemClick(thisAlbum.id,rootView) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/PicsAdapter.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/PicsAdapter.kt new file mode 100644 index 0000000..fc68ffc --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/PicsAdapter.kt @@ -0,0 +1,65 @@ +package com.codingblocks.restapiretrofitjson.adapters + +/** + * Created by Arunima Mitra on 03-07-2017. + */ +import android.content.Context +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ProgressBar +import com.codingblocks.restapiretrofitjson.R +import com.codingblocks.restapiretrofitjson.interfaces.ClickOnPicListener + +import com.codingblocks.restapiretrofitjson.models.Pic + +import com.squareup.picasso.Picasso +import kotlinx.android.synthetic.main.list_item_pics.view.* +import java.util.* + +/** + * Created by pervy_sage on 30/6/17. + */ + +class PicsAdapter(internal var photos: ArrayList, internal var mContext: Context) : RecyclerView.Adapter() { + + internal var onPhotoClickListener: ClickOnPicListener? = null + fun setOnPhotoClickListener(onPhotoClickListener: ClickOnPicListener) { + this.onPhotoClickListener = onPhotoClickListener + } + + fun updateAlbums(photos: ArrayList, progressBar: ProgressBar) { + this.photos = photos + progressBar.visibility = View.INVISIBLE + progressBar.visibility = View.GONE + notifyDataSetChanged() + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PicsViewHolder { + val li = mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater + val itemView = li.inflate(R.layout.list_item_pics, parent, false) + return PicsViewHolder(itemView) + } + + override fun onBindViewHolder(holder: PicsViewHolder, position: Int) { + holder.bindPhoto(photos[position]) + } + + override fun getItemCount(): Int { + return photos.size + } + + inner class PicsViewHolder(internal var rootView: View) + : RecyclerView.ViewHolder(rootView) { + fun bindPhoto(thisPhoto : Pic){ + rootView.tvTitle.text=thisPhoto.title + Picasso.with(mContext) + .load(thisPhoto.thumbnailUrl) + .into(rootView.ivThumbnail) + rootView.setOnClickListener { + ClickOnPicListener { url, title -> }!!.onClick(thisPhoto.thumbnailUrl,thisPhoto.title) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/TodoAdapter.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/TodoAdapter.kt index c0bb9b6..61187e7 100644 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/TodoAdapter.kt +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/TodoAdapter.kt @@ -5,6 +5,7 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ProgressBar import com.codingblocks.restapiretrofitjson.R import com.codingblocks.restapiretrofitjson.models.Todo @@ -17,8 +18,9 @@ public class TodoAdapter ( var todos: ArrayList ) : RecyclerView.Adapter() { - fun updateTodos(todos: ArrayList) { + fun updateTodos(todos: ArrayList,pbProgressBar: ProgressBar) { this.todos = todos + pbProgressBar.visibility=View.INVISIBLE notifyDataSetChanged() } @@ -39,7 +41,7 @@ public class TodoAdapter ( override fun getItemCount(): Int { Log.d("TODOS", todos.size.toString()) - return todos.size + return todos.size } @@ -48,6 +50,7 @@ public class TodoAdapter ( fun bindTodo(todo: Todo) { itemView.tvTodoTitle.text = todo.title; + if(todo.completed)itemView.cbCompleted.isChecked=true; } } } \ No newline at end of file diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/api/API.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/api/API.java index 771fdc2..8443745 100644 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/api/API.java +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/api/API.java @@ -15,6 +15,9 @@ public class API { private UsersAPI usersAPI; private CommentsAPI commentsAPI; private TodosAPI todosAPI; + private AlbumsAPI albumsAPI; + private AlbumsAPI.PicsApi photosApi; + public PostsAPI getPostsAPI() { return postsAPI; @@ -32,6 +35,13 @@ public TodosAPI getTodosAPI() { return todosAPI; } + public AlbumsAPI getAlbumsAPI() { return albumsAPI; } + + public AlbumsAPI.PicsApi getPhotosApi() { + return photosApi; + } + + private API() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://jsonplaceholder.typicode.com") @@ -44,6 +54,8 @@ private API() { usersAPI = retrofit.create(UsersAPI.class); commentsAPI = retrofit.create(CommentsAPI.class); todosAPI = retrofit.create(TodosAPI.class); + albumsAPI = retrofit.create(AlbumsAPI.class); + photosApi=retrofit.create(AlbumsAPI.PicsApi.class); } public static API getInstance() { diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/api/AlbumsAPI.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/api/AlbumsAPI.java new file mode 100644 index 0000000..ff32bbb --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/api/AlbumsAPI.java @@ -0,0 +1,38 @@ +package com.codingblocks.restapiretrofitjson.api; + +/** + * Created by Arunima Mitra on 03-07-2017. + */ + +import com.codingblocks.restapiretrofitjson.models.Album; +import com.codingblocks.restapiretrofitjson.models.Pic; + +import java.util.ArrayList; +import com.codingblocks.restapiretrofitjson.models.Album; +import com.codingblocks.restapiretrofitjson.models.Pic; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Path; +import retrofit2.http.Query; + +/** + * Created by pervy_sage on 1/7/17. + */ + +public interface AlbumsAPI { + @GET("/albums") + Call>getAlbumsbyUserId( + @Query("userId") Integer userId + ); + + interface PicsApi{ + @GET("/photos") + Call>getPhotos(); + + @GET("/albums/{id}/photos") + Call>getPhotosOfAlbumId( + @Path("id")int id + ); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/interfaces/ClickOnPicListener.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/interfaces/ClickOnPicListener.java new file mode 100644 index 0000000..9a322b3 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/interfaces/ClickOnPicListener.java @@ -0,0 +1,11 @@ + +package com.codingblocks.restapiretrofitjson.interfaces; + +/** + * Created by Arunima Mitra on 03-07-2017. + */ + + +public interface ClickOnPicListener { + void onClick(String url,String title); +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Album.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Album.kt new file mode 100644 index 0000000..804be74 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Album.kt @@ -0,0 +1,11 @@ +package com.codingblocks.restapiretrofitjson.models + +/** + * Created by Arunima Mitra on 02-07-2017. + */ + +data class Album( + val userId: Int, + val id: Int, + val title:String +) \ No newline at end of file diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Pic.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Pic.kt new file mode 100644 index 0000000..5d73c51 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Pic.kt @@ -0,0 +1,12 @@ +package com.codingblocks.restapiretrofitjson.models + +/** + * Created by Arunima Mitra on 03-07-2017. + */ +data class Pic( + val albumId:Int, + val id:Int, + val title:String, + val url:String, + val thumbnailUrl:String +) \ No newline at end of file diff --git a/app/src/main/res/layout/activity_albums.xml b/app/src/main/res/layout/activity_albums.xml new file mode 100644 index 0000000..1b22b88 --- /dev/null +++ b/app/src/main/res/layout/activity_albums.xml @@ -0,0 +1,34 @@ + + + + + + + + + +