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
3 changes: 3 additions & 0 deletions .idea/modules.xml

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

11 changes: 6 additions & 5 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,12 +27,13 @@ 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:appcompat-v7:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.android.support:cardview-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha8'
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 {
Expand Down
4 changes: 3 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activities.TodosActivity"></activity>
<activity android:name=".activities.TodosActivity" />
<activity android:name=".activities.AlbumActivity" />
<activity android:name=".activities.AlbumPhotosActivity"></activity>
</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.codingblocks.restapiretrofitjson
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import com.codingblocks.restapiretrofitjson.activities.AlbumActivity
import com.codingblocks.restapiretrofitjson.activities.PostsActivity
import com.codingblocks.restapiretrofitjson.activities.TodosActivity
import com.codingblocks.restapiretrofitjson.activities.UsersActivity
Expand All @@ -27,6 +28,7 @@ class MainActivity : AppCompatActivity() {
startActivity(Intent(this@MainActivity, TodosActivity::class.java))
})


btnAlbums.setOnClickListener ({
startActivity(Intent(this@MainActivity , AlbumActivity::class.java)) })
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.codingblocks.restapiretrofitjson.activities;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import com.codingblocks.restapiretrofitjson.R;
import com.codingblocks.restapiretrofitjson.adapters.AlbumAdapter;
import com.codingblocks.restapiretrofitjson.api.API;
import com.codingblocks.restapiretrofitjson.interfaces.OnItemClickListener2;
import com.codingblocks.restapiretrofitjson.models.Album;

import java.util.ArrayList;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class AlbumActivity extends AppCompatActivity {
RecyclerView rvAlbumList;
AlbumAdapter albumAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_album);
rvAlbumList= (RecyclerView) findViewById(R.id.rvAlbumList);
rvAlbumList.setLayoutManager(new LinearLayoutManager(this));
albumAdapter = new AlbumAdapter(this ,new ArrayList<Album>());
rvAlbumList.setAdapter(albumAdapter);

albumAdapter.setOnItemClickListener2(new OnItemClickListener2() {


@Override
public void onItemClick(String title , String url) {
Intent albumint = new Intent(AlbumActivity.this , AlbumPhotosActivity.class);
albumint.putExtra("title" , title);
albumint.putExtra("url" , url);
startActivity(albumint);
}
});


API.getInstance().getAlbumsAPI().getAlbums().enqueue(new Callback<ArrayList<Album>>() {
@Override
public void onResponse(Call<ArrayList<Album>> call, Response<ArrayList<Album>> response) {
albumAdapter.updateAlbums(response.body());
}

@Override
public void onFailure(Call<ArrayList<Album>> call, Throwable t) {

}
});
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.codingblocks.restapiretrofitjson.activities;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

import com.codingblocks.restapiretrofitjson.R;
import com.squareup.picasso.Picasso;

public class AlbumPhotosActivity extends AppCompatActivity {
TextView tvPhoto;
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_album_photos);
tvPhoto= (TextView) findViewById(R.id.tvPhoto);
imageView= (ImageView) findViewById(R.id.imageView);
String s = getIntent().getStringExtra("title");
String u = getIntent().getStringExtra("url");
tvPhoto.setText(s);
Picasso.with(this).load(u).into(imageView);

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ 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()!!)
}
})
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package com.codingblocks.restapiretrofitjson.adapters;

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.ImageView;
import android.widget.TextView;

import com.codingblocks.restapiretrofitjson.R;
import com.codingblocks.restapiretrofitjson.interfaces.OnItemClickListener2;
import com.codingblocks.restapiretrofitjson.models.Album;
import com.squareup.picasso.Picasso;

import java.util.ArrayList;

import static com.codingblocks.restapiretrofitjson.R.id.ivAlbum;

/**
* Created by kunalrustagi on 7/5/17.
*/

public class AlbumAdapter extends RecyclerView.Adapter<AlbumAdapter.AlbumViewHolder> {

private Context context;
public ArrayList<Album> albums;
private OnItemClickListener2 onItemClickListener2;

public void setOnItemClickListener2(OnItemClickListener2 onItemClickListener2) {
this.onItemClickListener2 = onItemClickListener2;
}

public AlbumAdapter(Context context, ArrayList<Album> albums) {
this.context = context;
this.albums = albums;
}
public void updateAlbums(ArrayList<Album> albums)
{
this.albums=albums;
notifyDataSetChanged();
}

@Override
public AlbumViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = li.inflate(R.layout.list_item_album , parent , false);

return new AlbumViewHolder(itemView);
}

@Override
public void onBindViewHolder(AlbumViewHolder holder, int position) {
final Album thisalbum = albums.get(position);
holder.tvAlbumTitle.setText(albums.get(position).getTitle());
String url = albums.get(position).getThumbnailUrl();
Picasso.with(context).load(url).into(holder.ivAlbums);
holder.thisview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onItemClickListener2 !=null)
{
onItemClickListener2.onItemClick(thisalbum.getTitle() , thisalbum.getUrl());
}
}
});


}

@Override
public int getItemCount() {
return albums.size();
}

class AlbumViewHolder extends RecyclerView.ViewHolder
{ TextView tvAlbumTitle;
ImageView ivAlbums;
View thisview;

public AlbumViewHolder(View itemView) {
super(itemView);
thisview=itemView;
tvAlbumTitle = (TextView) itemView.findViewById(R.id.tvAlbumTitle);
ivAlbums = (ImageView) itemView.findViewById(ivAlbum);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,12 @@ public class TodoAdapter (

fun bindTodo(todo: Todo) {
itemView.tvTodoTitle.text = todo.title;
if(todo.completed==true){
itemView.checkbox.setChecked(true);
}
else{
itemView.checkbox.setChecked(false);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public class API {
private UsersAPI usersAPI;
private CommentsAPI commentsAPI;
private TodosAPI todosAPI;
private AlbumsAPI albumsAPI;

public PostsAPI getPostsAPI() {
return postsAPI;
Expand All @@ -31,7 +32,9 @@ public CommentsAPI getCommentsAPI() {
public TodosAPI getTodosAPI() {
return todosAPI;
}

public AlbumsAPI getAlbumsAPI() {
return albumsAPI;
}
private API() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://jsonplaceholder.typicode.com")
Expand All @@ -44,6 +47,7 @@ private API() {
usersAPI = retrofit.create(UsersAPI.class);
commentsAPI = retrofit.create(CommentsAPI.class);
todosAPI = retrofit.create(TodosAPI.class);
albumsAPI = retrofit.create(AlbumsAPI.class);
}

public static API getInstance() {
Expand All @@ -53,4 +57,6 @@ public static API getInstance() {

return apiInstance;
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.codingblocks.restapiretrofitjson.api;

import com.codingblocks.restapiretrofitjson.models.Album;

import java.util.ArrayList;

import retrofit2.Call;
import retrofit2.http.GET;

/**
* Created by kunalrustagi on 7/5/17.
*/

public interface AlbumsAPI {

@GET("/photos")
Call<ArrayList<Album>> getAlbums();


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.codingblocks.restapiretrofitjson.interfaces;

/**
* Created by kunalrustagi on 7/5/17.
*/

public interface OnItemClickListener2 {
void onItemClick(String title, String url);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.codingblocks.restapiretrofitjson.models

/**
* Created by kunalrustagi on 7/5/17.
*/
data class Album(
val albumId : Int,
val title: String,
val id: Int,
val thumbnailUrl : String ,
val url: String
)
17 changes: 17 additions & 0 deletions app/src/main/res/layout/activity_album.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.codingblocks.restapiretrofitjson.activities.AlbumActivity">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_margin="5dp"
android:padding="3dp"
android:id="@+id/rvAlbumList"
android:layout_alignParentTop="true" />
</RelativeLayout>
Loading