diff --git a/.idea/modules.xml b/.idea/modules.xml index 1b3ccab..3e12210 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,8 +2,11 @@ + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index b963ad0..969f160 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,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 { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 363fe63..ec6a3db 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -21,7 +21,9 @@ - + + + \ No newline at end of file diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/MainActivity.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/MainActivity.kt index f8ad985..ff45150 100644 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/MainActivity.kt +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/MainActivity.kt @@ -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 @@ -27,6 +28,7 @@ class MainActivity : AppCompatActivity() { startActivity(Intent(this@MainActivity, TodosActivity::class.java)) }) - + btnAlbums.setOnClickListener ({ + startActivity(Intent(this@MainActivity , AlbumActivity::class.java)) }) } } diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/AlbumActivity.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/AlbumActivity.java new file mode 100644 index 0000000..fd8a9f2 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/AlbumActivity.java @@ -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()); + 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>() { + @Override + public void onResponse(Call> call, Response> response) { + albumAdapter.updateAlbums(response.body()); + } + + @Override + public void onFailure(Call> call, Throwable t) { + + } + }); + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/AlbumPhotosActivity.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/AlbumPhotosActivity.java new file mode 100644 index 0000000..9056f1b --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/AlbumPhotosActivity.java @@ -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); + + } +} 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..dc2cd98 100644 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/CommentsActivity.kt +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/CommentsActivity.kt @@ -31,11 +31,11 @@ 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()!!) } }) diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/AlbumAdapter.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/AlbumAdapter.java new file mode 100644 index 0000000..336525d --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/AlbumAdapter.java @@ -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 { + + private Context context; + public ArrayList albums; + private OnItemClickListener2 onItemClickListener2; + + public void setOnItemClickListener2(OnItemClickListener2 onItemClickListener2) { + this.onItemClickListener2 = onItemClickListener2; + } + + public AlbumAdapter(Context context, ArrayList albums) { + this.context = context; + this.albums = albums; + } + public void updateAlbums(ArrayList 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); + } + } + +} 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..c0afd12 100644 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/TodoAdapter.kt +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/TodoAdapter.kt @@ -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); + } } } } \ 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..635d476 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,7 @@ public class API { private UsersAPI usersAPI; private CommentsAPI commentsAPI; private TodosAPI todosAPI; + private AlbumsAPI albumsAPI; public PostsAPI getPostsAPI() { return postsAPI; @@ -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") @@ -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() { @@ -53,4 +57,6 @@ public static API getInstance() { return apiInstance; } + + } 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..6793f47 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/api/AlbumsAPI.java @@ -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> getAlbums(); + + +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/interfaces/OnItemClickListener2.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/interfaces/OnItemClickListener2.java new file mode 100644 index 0000000..defa51a --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/interfaces/OnItemClickListener2.java @@ -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); +} 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..a125efa --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Album.kt @@ -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 +) \ No newline at end of file diff --git a/app/src/main/res/layout/activity_album.xml b/app/src/main/res/layout/activity_album.xml new file mode 100644 index 0000000..6d226f9 --- /dev/null +++ b/app/src/main/res/layout/activity_album.xml @@ -0,0 +1,17 @@ + + + + diff --git a/app/src/main/res/layout/activity_album_photos.xml b/app/src/main/res/layout/activity_album_photos.xml new file mode 100644 index 0000000..daf7886 --- /dev/null +++ b/app/src/main/res/layout/activity_album_photos.xml @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/app/src/main/res/layout/activity_comments.xml b/app/src/main/res/layout/activity_comments.xml index 79b765b..386e9c8 100644 --- a/app/src/main/res/layout/activity_comments.xml +++ b/app/src/main/res/layout/activity_comments.xml @@ -9,6 +9,8 @@ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index d7e01c2..b49f920 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -14,12 +14,17 @@