Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions AndroidSample_Retrofit_RESTAPI
Submodule AndroidSample_Retrofit_RESTAPI added at 5c8e34
14 changes: 8 additions & 6 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -27,13 +27,15 @@ 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'
compile 'com.squareup.picasso:picasso:2.5.2'
testCompile 'junit:junit:4.12'

}
repositories {
mavenCentral()
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
<activity android:name=".activities.UsersActivity" />
<activity android:name=".activities.PostsActivity" />
<activity android:name=".activities.CommentsActivity" />
<activity android:name=".activities.AlbumsActivity"/>
<activity android:name=".activities.PicsActivity"/>
<activity android:name=".activities.ViewSpecificPic"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand Down
Original file line number Diff line number Diff line change
@@ -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<Album>(), 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<ArrayList<Album>> {
override fun onResponse(call: Call<ArrayList<Album>>, response: Response<ArrayList<Album>>) {
albumsAdapter.updateAlbums(response.body()!!, pbProgress)
}

override fun onFailure(call: Call<ArrayList<Album>>, t: Throwable) {

}
}

if (receivedId != -1) {
albumsApi.getAlbumsbyUserId(receivedId).enqueue(receiveAlbums)
} else {
albumsApi.getAlbumsbyUserId(null).enqueue(receiveAlbums)
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@ class CommentsActivity : AppCompatActivity() {

API.getInstance().commentsAPI.getCommentsByPostId(intent.getIntExtra("postId", 0))
.enqueue(object : Callback<ArrayList<Comment>> {
override fun onFailure(call: Call<ArrayList<Comment>>?, t: Throwable?) {
//
}

override fun onResponse(call: Call<ArrayList<Comment>>?, response: Response<ArrayList<Comment>>?) {
//
commentAdapter.updateComments(response!!.body()!!)
}
})
override fun onFailure(call: Call<ArrayList<Comment>>?, t: Throwable?) {
//
}

override fun onResponse(call: Call<ArrayList<Comment>>?, response: Response<ArrayList<Comment>>?) {
//
commentAdapter.updateComments(response!!.body()!!)
}
})
}
}
Original file line number Diff line number Diff line change
@@ -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<Pic>(), 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<ArrayList<Pic>> {
override fun onResponse(call: Call<ArrayList<Pic>>, response: Response<ArrayList<Pic>>) {
photosAdapter.updateAlbums(response.body()!!, pbProgress)
}

override fun onFailure(call: Call<ArrayList<Pic>>, t: Throwable) {

}
}
if (receivedId != -1) {
photosApi.getPhotosOfAlbumId(receivedId).enqueue(receivePhotos)
} else {
photosApi.photos.enqueue(receivePhotos)
}
}
}
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -24,25 +22,29 @@ class TodosActivity : AppCompatActivity() {
rvTodosList.layoutManager = LinearLayoutManager(this)
var todoAdapter = TodoAdapter(ArrayList<Todo>())
rvTodosList.adapter = todoAdapter
pbProgress.visibility = View.VISIBLE

var todoCallback = object: Callback<ArrayList<Todo>> {
override fun onFailure(call: Call<ArrayList<Todo>>?, t: Throwable?) {
}

override fun onResponse(call: Call<ArrayList<Todo>>?, response: Response<ArrayList<Todo>>?) {
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"
}



}
}
}
Original file line number Diff line number Diff line change
@@ -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)
}
}
Original file line number Diff line number Diff line change
@@ -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<Album>, internal var mContext: Context) : RecyclerView.Adapter<AlbumsAdapter.AlbumsViewHolder>() {

internal var onItemClickListener: OnItemClickListener? = null
fun setOnItemClickListener(onItemClickListener: OnItemClickListener) {
this.onItemClickListener = onItemClickListener
}

fun updateAlbums(albums: ArrayList<Album>, 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)
}
}
}
}
Loading