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.

13 changes: 7 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,14 @@ 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.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.android.support:cardview-v7:25.3.1'
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile 'com.squareup.picasso:picasso:2.5.2'
}
repositories {
mavenCentral()
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.AlbumsActivity" />
<activity android:name=".activities.PhotosActivity"></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.AlbumsActivity
import com.codingblocks.restapiretrofitjson.activities.PostsActivity
import com.codingblocks.restapiretrofitjson.activities.TodosActivity
import com.codingblocks.restapiretrofitjson.activities.UsersActivity
Expand All @@ -27,6 +28,8 @@ class MainActivity : AppCompatActivity() {
startActivity(Intent(this@MainActivity, TodosActivity::class.java))
})


btnAlbums.setOnClickListener({
startActivity(Intent(this@MainActivity, AlbumsActivity::class.java))
})
}
}
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.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;

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

import java.util.ArrayList;

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

public class AlbumsActivity extends AppCompatActivity {
AlbumAdapter albumAdapter;
RecyclerView rvAlbumsList;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_albums);
rvAlbumsList = (RecyclerView) findViewById(R.id.rvAlbumsList);
rvAlbumsList.setLayoutManager(new LinearLayoutManager(this));
albumAdapter = new AlbumAdapter(this, new ArrayList<Album>());
rvAlbumsList.setAdapter(albumAdapter);
albumAdapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(int itemId, View view) {
Intent i = new Intent(AlbumsActivity.this, PhotosActivity.class);
i.putExtra("id", itemId);
startActivity(i);
}
});


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,53 @@
package com.codingblocks.restapiretrofitjson.activities;

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.PhotoAdapter;
import com.codingblocks.restapiretrofitjson.api.API;
import com.codingblocks.restapiretrofitjson.api.PhotosAPI;
import com.codingblocks.restapiretrofitjson.models.Photo;

import java.util.ArrayList;

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

public class PhotosActivity extends AppCompatActivity {
PhotoAdapter photoAdapter;
RecyclerView rvPhotosList;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_photos);
rvPhotosList = (RecyclerView) findViewById(R.id.rvPhotosList);
rvPhotosList.setLayoutManager(new LinearLayoutManager(this));
photoAdapter = new PhotoAdapter(this, new ArrayList<Photo>());
rvPhotosList.setAdapter(photoAdapter);

PhotosAPI photosAPI = API.getInstance().getPhotosAPI();
Callback<ArrayList<Photo>> postCallback = new Callback<ArrayList<Photo>>() {
@Override
public void onResponse(Call<ArrayList<Photo>> call, Response<ArrayList<Photo>> response) {
photoAdapter.updatePhotos(response.body());
}

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

}
};
int useridreceived = getIntent().getIntExtra("id", -1);
if (useridreceived != -1) {
photosAPI.getPhotosById(useridreceived).enqueue(postCallback);
} else {
photosAPI.getPhotos().enqueue(postCallback);
}

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
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.TextView;

import com.codingblocks.restapiretrofitjson.R;
import com.codingblocks.restapiretrofitjson.interfaces.OnItemClickListener;
import com.codingblocks.restapiretrofitjson.models.Album;

import java.util.ArrayList;

/**
* Created by User on 06-07-2017.
*/
public class AlbumAdapter
extends RecyclerView.Adapter<AlbumAdapter.AlbumViewHolder>{
private Context context;
private ArrayList<Album> albums;
private OnItemClickListener onItemClickListener;

public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}

public AlbumAdapter(Context context, ArrayList<Album> albums) {
this.context = context;
this.albums = albums;
}
public void updateAlbums(ArrayList<Album> newalbumlist){
this.albums = newalbumlist;
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.albumtitle.setText(thisalbum.getTitle());
holder.thisView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (onItemClickListener != null) {
onItemClickListener.onItemClick(thisalbum.getId(), view);
}
}
});

}

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

class AlbumViewHolder extends RecyclerView.ViewHolder{
TextView albumtitle;
View thisView;
public AlbumViewHolder(View itemview){
super(itemview);
thisView = itemview;
albumtitle = (TextView) itemview.findViewById(R.id.albumtitle);
}

}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
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.OnItemClickListener;
import com.codingblocks.restapiretrofitjson.models.Photo;
import com.squareup.picasso.Picasso;

import java.util.ArrayList;

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

/**
* Created by User on 06-07-2017.
*/

public class PhotoAdapter
extends RecyclerView.Adapter<PhotoAdapter.PhotoViewHolder>{
private Context context;
private ArrayList<Photo> photos;
private OnItemClickListener onItemClickListener;

public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}

public PhotoAdapter(Context context, ArrayList<Photo> photos) {
this.context = context;
this.photos = photos;
}
public void updatePhotos(ArrayList<Photo> newphotolist){
this.photos = newphotolist;
notifyDataSetChanged();
}

@Override
public PhotoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater li = (LayoutInflater) context.getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
View itemview = li.inflate(R.layout.list_item_photo, parent, false);
return new PhotoViewHolder(itemview);

}

@Override
public void onBindViewHolder(PhotoViewHolder holder, int position) {
final Photo thisphoto = photos.get(position);
holder.phototitle.setText(thisphoto.getTitle());
Picasso.with(context).load(thisphoto.getThumbnailUrl()).into(holder.photothumbnail);
holder.thisView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (onItemClickListener != null) {
onItemClickListener.onItemClick(thisphoto.getId(), view);
}
}
});

}

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

class PhotoViewHolder extends RecyclerView.ViewHolder{
TextView phototitle;
ImageView photothumbnail;
View thisView;
public PhotoViewHolder(View itemview){
super(itemview);
thisView = itemview;
phototitle = (TextView) itemview.findViewById(R.id.phototitle);
photothumbnail = (ImageView) itemview.findViewById(R.id.photothumbnail);
}

}
}

Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package com.codingblocks.restapiretrofitjson.adapters

import android.content.Context
import android.support.v7.widget.RecyclerView
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.CheckBox
import android.widget.TextView
import com.codingblocks.restapiretrofitjson.R
import com.codingblocks.restapiretrofitjson.models.Todo

Expand All @@ -22,9 +25,12 @@ public class TodoAdapter (
notifyDataSetChanged()
}

override fun onBindViewHolder(holder: TodoViewHolder?, position: Int) {
override fun onBindViewHolder(holder: TodoViewHolder, position: Int) {

holder?.bindTodo(todos[position])
val (_, _, title, completed) = todos!![position]

holder.tvTodoTitle.text = title
holder.todocheck.isChecked = completed

}

Expand All @@ -43,11 +49,16 @@ public class TodoAdapter (
}


inner class TodoViewHolder(itemView: View?)
inner class TodoViewHolder(itemView: View)
: RecyclerView.ViewHolder(itemView) {
var todocheck: CheckBox
var tvTodoTitle: TextView

init {

tvTodoTitle = itemView.findViewById(R.id.tvTodoTitle) as TextView
todocheck = itemView.findViewById(R.id.todocheck) as CheckBox

fun bindTodo(todo: Todo) {
itemView.tvTodoTitle.text = todo.title;
}
}
}
Loading