diff --git a/.idea/modules.xml b/.idea/modules.xml index 1b3ccab..0092c81 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,8 +2,10 @@ + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index b963ad0..859335c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -30,9 +30,9 @@ dependencies { 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.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..b393510 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,17 +11,21 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - - - - + + - + + + + + + + \ 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 deleted file mode 100644 index f8ad985..0000000 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/MainActivity.kt +++ /dev/null @@ -1,32 +0,0 @@ -package com.codingblocks.restapiretrofitjson - -import android.content.Intent -import android.support.v7.app.AppCompatActivity -import android.os.Bundle -import com.codingblocks.restapiretrofitjson.activities.PostsActivity -import com.codingblocks.restapiretrofitjson.activities.TodosActivity -import com.codingblocks.restapiretrofitjson.activities.UsersActivity - -import kotlinx.android.synthetic.main.activity_main.* - -class MainActivity : AppCompatActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) - - btnPosts.setOnClickListener({ - startActivity(Intent(this@MainActivity, PostsActivity::class.java)) - }) - - btnUsers.setOnClickListener({ - startActivity(Intent(this@MainActivity, UsersActivity::class.java)) - }) - - btnTodos.setOnClickListener({ - startActivity(Intent(this@MainActivity, TodosActivity::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..db687f0 --- /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.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.Log; + +import com.codingblocks.restapiretrofitjson.R; +import com.codingblocks.restapiretrofitjson.adapters.AlbumAdapter; +import com.codingblocks.restapiretrofitjson.apis.AlbumApi; +import com.codingblocks.restapiretrofitjson.apis.RestApi; +import com.codingblocks.restapiretrofitjson.interfaces.OnButtonClickListener; +import com.codingblocks.restapiretrofitjson.models.Album; + +import java.util.ArrayList; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class AlbumActivity extends AppCompatActivity { + + private static final String TAG = "AlbumActivity"; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_album); + + RecyclerView recyclerView = (RecyclerView)findViewById(R.id.rv_Album); + recyclerView.setLayoutManager(new LinearLayoutManager(this)); + final AlbumAdapter albumAdapter = new AlbumAdapter(new ArrayList(),this); + recyclerView.setAdapter(albumAdapter); + + AlbumApi albumApi = RestApi.getInstance().getAlbumApi(); + albumApi.getAlbums().enqueue(new Callback>() { + @Override + public void onResponse(@NonNull Call> call, @NonNull Response> response) { + albumAdapter.updateList(response.body()); + } + @Override + public void onFailure(@NonNull Call> call, @NonNull Throwable t) { + Log.d(TAG, "onFailure: "); + } + }); + albumAdapter.setOnButtonClickListener(new OnButtonClickListener() { + @Override + public void onButtonClicked(int Id, int buttonId) { + Intent i = new Intent(AlbumActivity.this,PhotosActivity.class); + i.putExtra("albumId",Id); + startActivity(i); + } + }); + + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/CommentsActivity.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/CommentsActivity.java new file mode 100644 index 0000000..ed69347 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/CommentsActivity.java @@ -0,0 +1,49 @@ +package com.codingblocks.restapiretrofitjson.activities; + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.Log; + +import com.codingblocks.restapiretrofitjson.R; +import com.codingblocks.restapiretrofitjson.adapters.CommentsAdapter; +import com.codingblocks.restapiretrofitjson.apis.CommentApi; +import com.codingblocks.restapiretrofitjson.apis.RestApi; +import com.codingblocks.restapiretrofitjson.models.Comment; + +import java.util.ArrayList; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class CommentsActivity extends AppCompatActivity { + + private static final String TAG = "CommentsActivity"; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_comments); + + final RecyclerView recyclerView = (RecyclerView)findViewById(R.id.rv_comments); + recyclerView.setLayoutManager(new LinearLayoutManager(this)); + final CommentsAdapter commentsAdapter = new CommentsAdapter(new ArrayList(),this); + recyclerView.setAdapter(commentsAdapter); + + CommentApi commentApi = RestApi.getInstance().getCommentApi(); + commentApi.getCommentsByPostId(getIntent().getIntExtra("postId",-1)).enqueue(new Callback>() { + @Override + public void onResponse(@NonNull Call> call, @NonNull Response> response) { + Log.d(TAG, "onResponse: "+response.body()); + commentsAdapter.updateList(response.body()); + } + + @Override + public void onFailure(@NonNull Call> call, @NonNull Throwable t) { + Log.d(TAG, "onFailure: "); + } + }); + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/CommentsActivity.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/CommentsActivity.kt deleted file mode 100644 index a5607aa..0000000 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/CommentsActivity.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.codingblocks.restapiretrofitjson.activities - -import android.support.v7.app.AppCompatActivity -import android.os.Bundle -import android.support.v7.widget.LinearLayoutManager - -import com.codingblocks.restapiretrofitjson.R -import com.codingblocks.restapiretrofitjson.adapters.CommentAdapter -import com.codingblocks.restapiretrofitjson.api.API -import com.codingblocks.restapiretrofitjson.models.Comment -import kotlinx.android.synthetic.main.activity_comments.* - -import kotlinx.android.synthetic.main.activity_comments.view.* -import retrofit2.Call -import retrofit2.Callback -import retrofit2.Response -import retrofit2.Retrofit - -class CommentsActivity : AppCompatActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_comments) - - val commentAdapter = CommentAdapter(this, ArrayList()) - rvCommentsList.layoutManager = LinearLayoutManager(this) - rvCommentsList.adapter = commentAdapter - - - - 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/activities/MainActivity.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/MainActivity.java new file mode 100644 index 0000000..5fd698a --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/MainActivity.java @@ -0,0 +1,47 @@ +package com.codingblocks.restapiretrofitjson.activities; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.view.View; + +import com.codingblocks.restapiretrofitjson.R; + +public class MainActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + findViewById(R.id.btn_users).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent i = new Intent(MainActivity.this,UserActivity.class); + startActivity(i); + } + }); + findViewById(R.id.btn_posts).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent i = new Intent(MainActivity.this,PostActivity.class); + startActivity(i); + } + }); + findViewById(R.id.btn_album).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent i = new Intent(MainActivity.this,AlbumActivity.class); + startActivity(i); + + } + }); + findViewById(R.id.btn_todo).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent i = new Intent(MainActivity.this,TodoActivity.class); + startActivity(i); + } + }); + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/PhotoViewActivity.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/PhotoViewActivity.java new file mode 100644 index 0000000..ea28922 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/PhotoViewActivity.java @@ -0,0 +1,23 @@ +package com.codingblocks.restapiretrofitjson.activities; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.widget.ImageView; +import android.widget.TextView; + +import com.codingblocks.restapiretrofitjson.R; +import com.squareup.picasso.Picasso; + +public class PhotoViewActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_photo_view); + + ImageView imageView = (ImageView)findViewById(R.id.iv_photo); + TextView textView = (TextView)findViewById(R.id.tv_photo); + Picasso.with(this).load(getIntent().getStringExtra("url")).into(imageView); + textView.setText(getIntent().getStringExtra("title")); + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/PhotosActivity.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/PhotosActivity.java new file mode 100644 index 0000000..5f28088 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/PhotosActivity.java @@ -0,0 +1,60 @@ +package com.codingblocks.restapiretrofitjson.activities; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.Log; + +import com.codingblocks.restapiretrofitjson.R; +import com.codingblocks.restapiretrofitjson.adapters.PhotosAdapter; +import com.codingblocks.restapiretrofitjson.apis.PhotoApi; +import com.codingblocks.restapiretrofitjson.apis.RestApi; +import com.codingblocks.restapiretrofitjson.interfaces.OnPhotoClickListener; +import com.codingblocks.restapiretrofitjson.models.Photo; + +import java.util.ArrayList; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class PhotosActivity extends AppCompatActivity { + + private static final String TAG = "PhotosActivity"; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_photos); + RecyclerView recyclerView = (RecyclerView)findViewById(R.id.rv_photo); + recyclerView.setLayoutManager(new LinearLayoutManager(this)); + final PhotosAdapter photosAdapter = new PhotosAdapter(new ArrayList(),this); + recyclerView.setAdapter(photosAdapter); + + PhotoApi photoApi = RestApi.getInstance().getPhotoApi(); + photoApi.getPhotosByAlbumId(getIntent().getIntExtra("albumId",-1)).enqueue(new Callback>() { + @Override + public void onResponse(@NonNull Call> call, @NonNull Response> response) { + photosAdapter.updateList(response.body()); + } + + @Override + public void onFailure(@NonNull Call> call, @NonNull Throwable t) { + Log.d(TAG, "onFailure: "); + } + }); + + photosAdapter.setOnPhotoClickListener(new OnPhotoClickListener() { + @Override + public void onPhotoClicked(String url, String title) { + Intent i = new Intent(PhotosActivity.this,PhotoViewActivity.class); + i.putExtra("url",url); + i.putExtra("title",title); + startActivity(i); + } + }); + + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/PostActivity.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/PostActivity.java new file mode 100644 index 0000000..264c776 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/PostActivity.java @@ -0,0 +1,65 @@ +package com.codingblocks.restapiretrofitjson.activities; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.Log; + +import com.codingblocks.restapiretrofitjson.R; +import com.codingblocks.restapiretrofitjson.adapters.PostsAdapter; +import com.codingblocks.restapiretrofitjson.apis.PostApi; +import com.codingblocks.restapiretrofitjson.apis.RestApi; +import com.codingblocks.restapiretrofitjson.interfaces.OnButtonClickListener; +import com.codingblocks.restapiretrofitjson.models.Post; + +import java.util.ArrayList; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class PostActivity extends AppCompatActivity { + private static final String TAG = "PostActivity"; + private PostsAdapter postsAdapter; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_post); + final RecyclerView recyclerView = (RecyclerView)findViewById(R.id.rv_posts); + recyclerView.setLayoutManager(new LinearLayoutManager(this)); + postsAdapter = new PostsAdapter(new ArrayList(),this); + recyclerView.setAdapter(postsAdapter); + + PostApi postApi = RestApi.getInstance().getPostApi(); + Call> call; + int userId = getIntent().getIntExtra("userId",-1); + if(userId==-1) + call = postApi.getPostsByUserId(null); + else + call = postApi.getPostsByUserId(userId); + + call.enqueue(new Callback>() { + @Override + public void onResponse(@NonNull Call> call, @NonNull Response> response) { + postsAdapter.updateList(response.body()); + } + @Override + public void onFailure(@NonNull Call> call, @NonNull Throwable t) { + Log.d(TAG, "onFailure: "); + t.printStackTrace(); + } + }); + + postsAdapter.setOnButtonClickListener(new OnButtonClickListener() { + @Override + public void onButtonClicked(int Id, int buttonId) { + Intent i = new Intent(PostActivity.this,CommentsActivity.class); + i.putExtra("postId",Id); + startActivity(i); + } + }); + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/PostsActivity.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/PostsActivity.java deleted file mode 100644 index b244f79..0000000 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/PostsActivity.java +++ /dev/null @@ -1,73 +0,0 @@ -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.support.v7.widget.RecyclerView; -import android.util.Log; -import android.view.View; - -import com.codingblocks.restapiretrofitjson.MainActivity; -import com.codingblocks.restapiretrofitjson.R; -import com.codingblocks.restapiretrofitjson.adapters.PostAdapter; -import com.codingblocks.restapiretrofitjson.api.API; -import com.codingblocks.restapiretrofitjson.api.PostsAPI; -import com.codingblocks.restapiretrofitjson.interfaces.OnItemClickListener; -import com.codingblocks.restapiretrofitjson.models.Post; - -import java.util.ArrayList; - -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; - -public class PostsActivity extends AppCompatActivity { - - public static final String TAG = "PA"; - - RecyclerView rvPostsList; - PostAdapter postAdapter; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_posts); - - rvPostsList = (RecyclerView) findViewById(R.id.rvPostsList); - rvPostsList.setLayoutManager(new LinearLayoutManager(this)); - postAdapter = new PostAdapter(this, new ArrayList()); - rvPostsList.setAdapter(postAdapter); - postAdapter.setOnItemClickListener(new OnItemClickListener() { - @Override - public void onItemClick(int itemId, View view) { - Intent i = new Intent(PostsActivity.this, CommentsActivity.class); - i.putExtra("postId", itemId); - startActivity(i); - } - }); - - - PostsAPI postsAPI = API.getInstance().getPostsAPI(); - Callback> postCallback = new Callback>() { - - @Override - public void onResponse(Call> call, Response> response) { - Log.d(TAG, "onResponse: "); - postAdapter.updatePosts(response.body()); - } - - @Override - public void onFailure(Call> call, Throwable t) { - - } - }; - int userIdReceived = getIntent().getIntExtra("userId", -1); - if (userIdReceived != -1) { - postsAPI.getPostsByUserId(userIdReceived).enqueue(postCallback); - } else { - postsAPI.getPosts().enqueue(postCallback); - } - - } -} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/TodoActivity.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/TodoActivity.java new file mode 100644 index 0000000..739d49c --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/TodoActivity.java @@ -0,0 +1,55 @@ +package com.codingblocks.restapiretrofitjson.activities; + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.Log; + +import com.codingblocks.restapiretrofitjson.R; +import com.codingblocks.restapiretrofitjson.adapters.TodosAdapter; +import com.codingblocks.restapiretrofitjson.apis.RestApi; +import com.codingblocks.restapiretrofitjson.apis.TodoApi; +import com.codingblocks.restapiretrofitjson.models.Todo; + +import java.util.ArrayList; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class TodoActivity extends AppCompatActivity { + + private static final String TAG = "TodoActivity"; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_todo); + + final RecyclerView recyclerView = (RecyclerView)findViewById(R.id.rv_todo); + recyclerView.setLayoutManager(new LinearLayoutManager(this)); + final TodosAdapter todosAdapter = new TodosAdapter(new ArrayList(),this); + recyclerView.setAdapter(todosAdapter); + + TodoApi todoApi = RestApi.getInstance().getTodoApi(); + Call> call; + int userId = getIntent().getIntExtra("userId",-1); + if(userId==-1){ + call = todoApi.getTodos(); + }else{ + call = todoApi.getTodosByUserId(userId); + } + call.enqueue(new Callback>() { + @Override + public void onResponse(@NonNull Call> call, @NonNull Response> response) { + todosAdapter.updateList(response.body()); + } + + @Override + public void onFailure(@NonNull Call> call, @NonNull Throwable t) { + Log.d(TAG, "onFailure: "); + } + }); + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/TodosActivity.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/TodosActivity.kt deleted file mode 100644 index b7c7813..0000000 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/TodosActivity.kt +++ /dev/null @@ -1,48 +0,0 @@ -package com.codingblocks.restapiretrofitjson.activities - -import android.support.v7.app.AppCompatActivity -import android.os.Bundle -import android.support.v7.widget.LinearLayoutManager -import android.util.Log - -import kotlinx.android.synthetic.main.activity_todos.* - -import com.codingblocks.restapiretrofitjson.R -import com.codingblocks.restapiretrofitjson.adapters.TodoAdapter -import com.codingblocks.restapiretrofitjson.api.API -import com.codingblocks.restapiretrofitjson.models.Todo -import retrofit2.Call -import retrofit2.Callback -import retrofit2.Response - -class TodosActivity : AppCompatActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_todos) - - rvTodosList.layoutManager = LinearLayoutManager(this) - var todoAdapter = TodoAdapter(ArrayList()) - rvTodosList.adapter = todoAdapter - - var todoCallback = object: Callback> { - override fun onFailure(call: Call>?, t: Throwable?) { - } - - override fun onResponse(call: Call>?, response: Response>?) { - todoAdapter.updateTodos(response!!.body()!!) - } - - } - var userId = intent.getIntExtra("userId", -1) - if (userId != -1) { - API.getInstance().todosAPI.getTodos(userId).enqueue(todoCallback) - - } else { - API.getInstance().todosAPI.getTodos(null).enqueue(todoCallback) - } - - - - } -} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/UserActivity.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/UserActivity.java new file mode 100644 index 0000000..b4826b1 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/UserActivity.java @@ -0,0 +1,63 @@ +package com.codingblocks.restapiretrofitjson.activities; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.Log; + +import com.codingblocks.restapiretrofitjson.R; +import com.codingblocks.restapiretrofitjson.adapters.UsersAdapter; +import com.codingblocks.restapiretrofitjson.apis.RestApi; +import com.codingblocks.restapiretrofitjson.apis.UserApi; +import com.codingblocks.restapiretrofitjson.interfaces.OnButtonClickListener; +import com.codingblocks.restapiretrofitjson.models.User; + +import java.util.ArrayList; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class UserActivity extends AppCompatActivity { + private static final String TAG = "UserActivity"; + private UsersAdapter usersAdapter; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_user); + final RecyclerView recyclerView = (RecyclerView)findViewById(R.id.rv_users); + recyclerView.setLayoutManager(new LinearLayoutManager(this)); + usersAdapter = new UsersAdapter(new ArrayList(),this); + recyclerView.setAdapter(usersAdapter); + + UserApi userApi = RestApi.getInstance().getUserApi(); + userApi.getUsers().enqueue(new Callback>() { + @Override + public void onResponse(@NonNull Call> call, @NonNull Response> response) { + usersAdapter.updateList(response.body()); + //Log.d(TAG, "onResponse: "+response.body()); + } + @Override + public void onFailure(@NonNull Call> call, @NonNull Throwable t) { + Log.d(TAG, "onFailure: "); + } + }); + usersAdapter.setOnButtonClickListener(new OnButtonClickListener() { + @Override + public void onButtonClicked(int Id, int buttonId) { + if(buttonId==UsersAdapter.POST_BUTTON){ + Intent i = new Intent(UserActivity.this,PostActivity.class); + i.putExtra("userId",Id); + startActivity(i); + }else if(buttonId==UsersAdapter.TODO_BUTTON){ + Intent i = new Intent(UserActivity.this,TodoActivity.class); + i.putExtra("userId",Id); + startActivity(i); + } + } + }); + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/UsersActivity.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/UsersActivity.java deleted file mode 100644 index f70648e..0000000 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/activities/UsersActivity.java +++ /dev/null @@ -1,92 +0,0 @@ -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.support.v7.widget.RecyclerView; -import android.view.View; -import android.widget.Button; - -import com.codingblocks.restapiretrofitjson.R; -import com.codingblocks.restapiretrofitjson.adapters.UserAdapter; -import com.codingblocks.restapiretrofitjson.api.API; -import com.codingblocks.restapiretrofitjson.interfaces.OnItemClickListener; -import com.codingblocks.restapiretrofitjson.models.User; - -import java.util.ArrayList; - -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; - -public class UsersActivity extends AppCompatActivity { - - public static final String TAG = "USERS"; - - RecyclerView rvUserList; - UserAdapter userAdapter; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_users); - - rvUserList = (RecyclerView) findViewById(R.id.rvUserList); - rvUserList.setLayoutManager(new LinearLayoutManager(this)); - userAdapter = new UserAdapter(this, new ArrayList()); - rvUserList.setAdapter(userAdapter); - userAdapter.setOnItemClickListener(new OnItemClickListener() { - @Override - public void onItemClick(int itemId, View view) { - - switch (view.getId()) { - case R.id.btnUserComments: - Intent todosActIntent = new Intent(UsersActivity.this, - TodosActivity.class); - todosActIntent.putExtra("userId", itemId); - startActivity(todosActIntent); - break; - case R.id.btnUserPosts: - Intent postActIntent = new Intent(UsersActivity.this, - PostsActivity.class); - - postActIntent.putExtra("userId", itemId); - startActivity(postActIntent); - break; - } - - - } - }); - - ((Button) findViewById(R.id.btnAllPosts)).setOnClickListener( - new View.OnClickListener() { - @Override - public void onClick(View view) { - startActivity(new Intent( - UsersActivity.this, - PostsActivity.class - )); - } - } - ); - - - API.getInstance().getUsersAPI().getUsers().enqueue(new Callback>() { - @Override - public void onResponse(Call> call, - Response> response) { - userAdapter.updateUsers(response.body()); - } - - @Override - public void onFailure(Call> call, Throwable t) { - - } - }); - - } - - -} 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..e9f553f --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/AlbumAdapter.java @@ -0,0 +1,71 @@ +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.interfaces.OnButtonClickListener; +import com.codingblocks.restapiretrofitjson.models.Album; + +import java.util.ArrayList; + +/** + * Created by Suraj on 6/30/2017. + */ + +public class AlbumAdapter extends RecyclerView.Adapter { + private ArrayList albumsList; + private final Context context; + private OnButtonClickListener onButtonClickListener; + public AlbumAdapter(ArrayList albumsList, Context context) { + this.albumsList = albumsList; + this.context = context; + } + + public void setOnButtonClickListener(OnButtonClickListener onButtonClickListener) { + this.onButtonClickListener = onButtonClickListener; + } + + public void updateList(ArrayList albumsList){ + this.albumsList = albumsList; + notifyDataSetChanged(); + } + @Override + public AlbumViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View itemView = li.inflate(android.R.layout.simple_list_item_1,parent,false); + return new AlbumViewHolder(itemView); + } + + @Override + public void onBindViewHolder(AlbumViewHolder holder, int position) { + final Album album = albumsList.get(position); + holder.tvAlbum.setText(album.getTitle()); + holder.rootView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if(onButtonClickListener!=null){ + onButtonClickListener.onButtonClicked(album.getId(),-1); + } + } + }); + } + + @Override + public int getItemCount() { + return albumsList.size(); + } + + class AlbumViewHolder extends RecyclerView.ViewHolder{ + final TextView tvAlbum; + final View rootView; + public AlbumViewHolder(View itemView) { + super(itemView); + tvAlbum = (TextView)itemView.findViewById(android.R.id.text1); + rootView = itemView; + } + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/CommentAdapter.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/CommentAdapter.kt deleted file mode 100644 index 01c70e7..0000000 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/CommentAdapter.kt +++ /dev/null @@ -1,63 +0,0 @@ -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.models.Comment -import kotlinx.android.synthetic.main.list_item_comment.view.* -import java.util.* - -/** - * Created by championswimmer on 29/06/17. - */ - -class CommentAdapter(private val context: Context, - private var comments: ArrayList) - : RecyclerView.Adapter() { - - fun updateComments(comments: ArrayList) { - this.comments = comments; - notifyDataSetChanged(); - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CommentViewHolder { - - - val itemView = LayoutInflater.from(parent.context) - .inflate(R.layout.list_item_comment, parent, false) - - return CommentViewHolder( - itemView.tvCommentBody, - itemView.tvCommentName, - itemView.tvCommentEmail, - itemView - ) - } - - override fun onBindViewHolder(holder: CommentViewHolder, position: Int) { - - val (_, _, name, email, body) = comments[position] - holder.tvCommentBody.text = body - holder.tvCommentName.text = name - holder.tvCommentEmail.text = email - - } - - override fun getItemCount(): Int { - return comments.size - } - - class CommentViewHolder( - public val tvCommentBody: TextView, - public val tvCommentName: TextView, - public val tvCommentEmail: TextView, - itemView: View - ) : RecyclerView.ViewHolder(itemView) { - - - } -} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/CommentsAdapter.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/CommentsAdapter.java new file mode 100644 index 0000000..4f5fa93 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/CommentsAdapter.java @@ -0,0 +1,65 @@ +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.models.Comment; + +import java.util.ArrayList; + +/** + * Created by Suraj on 6/30/2017. + */ + +public class CommentsAdapter extends RecyclerView.Adapter { + + private ArrayList commentsList; + private final Context context; + + public CommentsAdapter(ArrayList commentsList, Context context) { + this.commentsList = commentsList; + this.context = context; + } + + public void updateList(ArrayList commentsList){ + this.commentsList = commentsList; + notifyDataSetChanged(); + } + + @Override + public CommentsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View itemView = li.inflate(R.layout.list_comments,parent,false); + return new CommentsViewHolder(itemView); + } + + @Override + public void onBindViewHolder(CommentsViewHolder holder, int position) { + Comment comment = commentsList.get(position); + holder.tvCommentBody.setText(comment.getBody()); + holder.tvCommentName.setText(comment.getName()); + holder.tvCommentEmail.setText(comment.getEmail()); + } + + @Override + public int getItemCount() { + return commentsList.size(); + } + + class CommentsViewHolder extends RecyclerView.ViewHolder{ + final TextView tvCommentBody; + final TextView tvCommentName; + final TextView tvCommentEmail; + public CommentsViewHolder(View itemView) { + super(itemView); + tvCommentBody = itemView.findViewById(R.id.tv_CommentBody); + tvCommentName = itemView.findViewById(R.id.tv_CommentName); + tvCommentEmail = itemView.findViewById(R.id.tv_CommentEmail); + } + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/PhotosAdapter.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/PhotosAdapter.java new file mode 100644 index 0000000..53efa86 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/PhotosAdapter.java @@ -0,0 +1,79 @@ +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.OnPhotoClickListener; +import com.codingblocks.restapiretrofitjson.models.Photo; +import com.squareup.picasso.Picasso; + +import java.util.ArrayList; + +/** + * Created by Suraj on 6/30/2017. + */ + +public class PhotosAdapter extends RecyclerView.Adapter { + + private ArrayList photosList; + private final Context context; + private OnPhotoClickListener onPhotoClickListener; + public PhotosAdapter(ArrayList photosList, Context context) { + this.photosList = photosList; + this.context = context; + } + + public void setOnPhotoClickListener(OnPhotoClickListener onPhotoClickListener) { + this.onPhotoClickListener = onPhotoClickListener; + } + + public void updateList(ArrayList photosList){ + this.photosList = photosList; + notifyDataSetChanged(); + } + @Override + public PhotosViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + LayoutInflater li = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View itemView = li.inflate(R.layout.list_photos,parent,false); + return new PhotosViewHolder(itemView); + } + + @Override + public void onBindViewHolder(PhotosViewHolder holder, int position) { + final Photo photo = photosList.get(position); + holder.tvPhotoTitle.setText(photo.getTitle()); + Picasso.with(context).load(photo.getThumbnailUrl()).into(holder.ivThumbnail); + holder.rootView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if(onPhotoClickListener!=null){ + onPhotoClickListener.onPhotoClicked(photo.getUrl(),photo.getTitle()); + } + + } + }); + } + + @Override + public int getItemCount() { + return photosList.size(); + } + + class PhotosViewHolder extends RecyclerView.ViewHolder{ + final TextView tvPhotoTitle; + final ImageView ivThumbnail; + final View rootView; + public PhotosViewHolder(View itemView) { + super(itemView); + tvPhotoTitle = itemView.findViewById(R.id.tv_title); + ivThumbnail = itemView.findViewById(R.id.iv_thumb); + rootView = itemView; + } + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/PostAdapter.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/PostAdapter.java deleted file mode 100644 index 5a6fdef..0000000 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/PostAdapter.java +++ /dev/null @@ -1,90 +0,0 @@ -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.TextView; - -import com.codingblocks.restapiretrofitjson.R; -import com.codingblocks.restapiretrofitjson.interfaces.OnItemClickListener; -import com.codingblocks.restapiretrofitjson.models.Post; - -import java.util.ArrayList; - -/** - * Created by championswimmer on 29/06/17. - */ - -public class PostAdapter - extends RecyclerView.Adapter { - - public static final String TAG = "PADPTR"; - - private Context context; - private ArrayList posts; - - private OnItemClickListener onItemClickListener; - - public void setOnItemClickListener(OnItemClickListener onItemClickListener) { - this.onItemClickListener = onItemClickListener; - } - - public PostAdapter(Context context, ArrayList posts) { - this.context = context; - this.posts = posts; - } - - public void updatePosts(ArrayList posts) { - this.posts = posts; - notifyDataSetChanged(); - } - - @Override - public PostViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - Log.d(TAG, "onCreateViewHolder: "); - LayoutInflater li = - (LayoutInflater) context.getSystemService( - Context.LAYOUT_INFLATER_SERVICE); - View itemView = li.inflate(R.layout.list_item_post, parent, false); - - return new PostViewHolder(itemView); - } - - @Override - public void onBindViewHolder(PostViewHolder holder, int position) { - Log.d(TAG, "onBindViewHolder: "); - final Post thisPost = posts.get(position); - - holder.tvPostTitle.setText(thisPost.getTitle()); - holder.tvPostBody.setText(thisPost.getBody()); - holder.thisView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - if (onItemClickListener != null) { - onItemClickListener.onItemClick(thisPost.getId(), view); - } - } - }); - } - - @Override - public int getItemCount() { - return posts.size(); - } - - class PostViewHolder extends RecyclerView.ViewHolder { - - TextView tvPostBody, tvPostTitle; - View thisView; - - public PostViewHolder(View itemView) { - super(itemView); - thisView = itemView; - tvPostBody = (TextView) itemView.findViewById(R.id.tvPostBody); - tvPostTitle = (TextView) itemView.findViewById(R.id.tvPostTitle); - } - } -} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/PostsAdapter.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/PostsAdapter.java new file mode 100644 index 0000000..90cd9e9 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/PostsAdapter.java @@ -0,0 +1,77 @@ +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.OnButtonClickListener; +import com.codingblocks.restapiretrofitjson.models.Post; + +import java.util.ArrayList; + +/** + * Created by Suraj on 6/30/2017. + */ + +public class PostsAdapter extends RecyclerView.Adapter { + + private ArrayList postList; + private final Context context; + private OnButtonClickListener onButtonClickListener; + public PostsAdapter(ArrayList postList, Context context) { + this.postList = postList; + this.context = context; + } + public void setOnButtonClickListener(OnButtonClickListener onButtonClickListener) { + this.onButtonClickListener = onButtonClickListener; + } + + public void updateList(ArrayList postList){ + this.postList = postList; + notifyDataSetChanged(); + } + + @Override + public PostsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + LayoutInflater li = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View itemView = li.inflate(R.layout.list_posts,parent,false); + return new PostsViewHolder(itemView); + } + + @Override + public void onBindViewHolder(PostsViewHolder holder, int position) { + + final Post post = postList.get(position); + holder.tvPostTitle.setText(post.getTitle()); + holder.tvPostBody.setText(post.getBody()); + holder.rootView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if(onButtonClickListener!=null){ + onButtonClickListener.onButtonClicked(post.getId(),0); + } + } + }); + } + + @Override + public int getItemCount() { + return postList.size(); + } + + class PostsViewHolder extends RecyclerView.ViewHolder{ + final TextView tvPostTitle; + final TextView tvPostBody; + final View rootView; + public PostsViewHolder(View itemView) { + super(itemView); + tvPostTitle = itemView.findViewById(R.id.tv_PostTitle); + tvPostBody = itemView.findViewById(R.id.tv_PostBody); + rootView = itemView; + } + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/TodoAdapter.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/TodoAdapter.kt deleted file mode 100644 index c0bb9b6..0000000 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/TodoAdapter.kt +++ /dev/null @@ -1,53 +0,0 @@ -package com.codingblocks.restapiretrofitjson.adapters - -import android.support.v7.widget.RecyclerView -import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import com.codingblocks.restapiretrofitjson.R -import com.codingblocks.restapiretrofitjson.models.Todo - -import kotlinx.android.synthetic.main.list_item_todo.view.* - -/** - * Created by championswimmer on 02/07/17. - */ -public class TodoAdapter ( - var todos: ArrayList -) : RecyclerView.Adapter() { - - fun updateTodos(todos: ArrayList) { - this.todos = todos - notifyDataSetChanged() - } - - override fun onBindViewHolder(holder: TodoViewHolder?, position: Int) { - - holder?.bindTodo(todos[position]) - - } - - override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): TodoViewHolder { - - var itemView: View = LayoutInflater.from(parent?.context) - .inflate(R.layout.list_item_todo, parent, false) - - return TodoViewHolder(itemView) - - } - - override fun getItemCount(): Int { - Log.d("TODOS", todos.size.toString()) - return todos.size - } - - - inner class TodoViewHolder(itemView: View?) - : RecyclerView.ViewHolder(itemView) { - - fun bindTodo(todo: Todo) { - itemView.tvTodoTitle.text = todo.title; - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/TodosAdapter.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/TodosAdapter.java new file mode 100644 index 0000000..1484e65 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/TodosAdapter.java @@ -0,0 +1,64 @@ +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.CheckBox; +import android.widget.TextView; + +import com.codingblocks.restapiretrofitjson.R; +import com.codingblocks.restapiretrofitjson.models.Todo; + +import java.util.ArrayList; + +/** + * Created by Suraj on 6/30/2017. + */ + +public class TodosAdapter extends RecyclerView.Adapter { + + private ArrayList todosList; + private final Context context; + + public TodosAdapter(ArrayList todosList, Context context) { + this.todosList = todosList; + this.context = context; + } + + public void updateList(ArrayList todosList){ + this.todosList = todosList; + notifyDataSetChanged(); + } + + @Override + public TodosViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + LayoutInflater li = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View itemView = li.inflate(R.layout.list_todo,parent,false); + return new TodosViewHolder(itemView); + } + + @Override + public void onBindViewHolder(TodosViewHolder holder, int position) { + + final Todo todo = todosList.get(position); + holder.todoTitle.setText(todo.getTitle()); + holder.todoCheckBox.setChecked(todo.getCompleted()); + } + + @Override + public int getItemCount() { + return todosList.size(); + } + + class TodosViewHolder extends RecyclerView.ViewHolder{ + final TextView todoTitle; + final CheckBox todoCheckBox; + public TodosViewHolder(View itemView) { + super(itemView); + todoTitle = itemView.findViewById(R.id.tv_Todo); + todoCheckBox = itemView.findViewById(R.id.cb_Todo); + } + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/UserAdapter.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/UserAdapter.kt deleted file mode 100644 index f9c5e79..0000000 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/UserAdapter.kt +++ /dev/null @@ -1,73 +0,0 @@ -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 com.codingblocks.restapiretrofitjson.R -import com.codingblocks.restapiretrofitjson.interfaces.OnItemClickListener -import com.codingblocks.restapiretrofitjson.models.User -import kotlinx.android.synthetic.main.list_item_user.view.* -import java.util.* - -/** - * Created by championswimmer on 29/06/17. - */ - -class UserAdapter(private val context: Context, - private var users: ArrayList?) - : RecyclerView.Adapter() { - internal var onItemClickListener: OnItemClickListener? = null - - fun setOnItemClickListener(onItemClickListener: OnItemClickListener) { - this.onItemClickListener = onItemClickListener - } - - fun updateUsers(newUserList: ArrayList) { - this.users = newUserList - notifyDataSetChanged() - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder { - val itemView = LayoutInflater.from(parent.context) - .inflate(R.layout.list_item_user, parent, false) - - return UserViewHolder(itemView) - } - - override fun onBindViewHolder(holder: UserViewHolder, position: Int) { - holder.bindUser(users!![position]) - } - - override fun getItemCount(): Int { - return users!!.size - } - - inner class UserViewHolder( - public var thisView: View - ) : RecyclerView.ViewHolder(thisView) { - - fun bindUser(user: User) { - thisView.tvUserUsername.text = user.username - thisView.tvUserName.text = user.name - thisView.tvUserPhone.text = user.phone - thisView.tvUserEmail.text = user.email - thisView.btnUserPosts.setOnClickListener { - onItemClickListener?.onItemClick(user.id, - itemView.btnUserPosts) - } - thisView.btnUserComments.setOnClickListener { - onItemClickListener?.onItemClick(user.id, - itemView.btnUserComments) - } - - } - - } - - companion object { - - val TAG = "UA" - } -} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/UsersAdapter.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/UsersAdapter.java new file mode 100644 index 0000000..addf9e1 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/adapters/UsersAdapter.java @@ -0,0 +1,99 @@ +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.Button; +import android.widget.TextView; + +import com.codingblocks.restapiretrofitjson.R; +import com.codingblocks.restapiretrofitjson.interfaces.OnButtonClickListener; +import com.codingblocks.restapiretrofitjson.models.User; + +import java.util.ArrayList; + +/** + * Created by Suraj on 6/30/2017. + */ + +public class UsersAdapter extends RecyclerView.Adapter { + + public static final int POST_BUTTON =1,TODO_BUTTON=2; + + private ArrayList userList; + private final Context context; + private OnButtonClickListener onButtonClickListener; + + public void setOnButtonClickListener(OnButtonClickListener onButtonClickListener) { + this.onButtonClickListener = onButtonClickListener; + } + + public UsersAdapter(ArrayList userList, Context context) { + this.userList = userList; + this.context = context; + } + + public void updateList(ArrayList userList){ + this.userList = userList; + notifyDataSetChanged(); + } + + // test + @Override + public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + LayoutInflater li = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View itemView = li.inflate(R.layout.list_users,parent,false); + return new UserViewHolder(itemView); + } + + @Override + public void onBindViewHolder(UserViewHolder holder, int position) { + final User user = userList.get(position); + holder.tvUser.setText(user.getUsername()); + holder.tvName.setText(user.getName()); + holder.tvEmail.setText(user.getEmail()); + holder.tvPhone.setText(user.getPhone()); + holder.btnUserPosts.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if(onButtonClickListener!=null){ + onButtonClickListener.onButtonClicked(user.getId(),POST_BUTTON); + } + } + }); + holder.btnUserTodo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if(onButtonClickListener!=null){ + onButtonClickListener.onButtonClicked(user.getId(),TODO_BUTTON); + } + } + }); + } + + @Override + public int getItemCount() { + return userList.size(); + } + + class UserViewHolder extends RecyclerView.ViewHolder{ + final TextView tvUser; + final TextView tvName; + final TextView tvPhone; + final TextView tvEmail; + final Button btnUserPosts; + final Button btnUserTodo; + + public UserViewHolder(View itemView) { + super(itemView); + tvUser = itemView.findViewById(R.id.tvUser); + tvName = itemView.findViewById(R.id.tv_Name); + tvPhone = itemView.findViewById(R.id.tv_Phone); + tvEmail = itemView.findViewById(R.id.tv_Email); + btnUserPosts = itemView.findViewById(R.id.btn_UserPosts); + btnUserTodo = itemView.findViewById(R.id.btn_UserTodo); + } + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/api/API.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/api/API.java deleted file mode 100644 index 771fdc2..0000000 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/api/API.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.codingblocks.restapiretrofitjson.api; - -import retrofit2.Retrofit; -import retrofit2.converter.gson.GsonConverterFactory; - -/** - * Created by championswimmer on 30/06/17. - */ - -public class API { - - private static API apiInstance; - - private PostsAPI postsAPI; - private UsersAPI usersAPI; - private CommentsAPI commentsAPI; - private TodosAPI todosAPI; - - public PostsAPI getPostsAPI() { - return postsAPI; - } - - public UsersAPI getUsersAPI() { - return usersAPI; - } - - public CommentsAPI getCommentsAPI() { - return commentsAPI; - } - - public TodosAPI getTodosAPI() { - return todosAPI; - } - - private API() { - Retrofit retrofit = new Retrofit.Builder() - .baseUrl("https://jsonplaceholder.typicode.com") - .addConverterFactory( - GsonConverterFactory.create() - ) - .build(); - - postsAPI = retrofit.create(PostsAPI.class); - usersAPI = retrofit.create(UsersAPI.class); - commentsAPI = retrofit.create(CommentsAPI.class); - todosAPI = retrofit.create(TodosAPI.class); - } - - public static API getInstance() { - if (apiInstance == null) { - apiInstance = new API(); - } - - return apiInstance; - } -} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/api/TodosAPI.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/api/TodosAPI.java deleted file mode 100644 index fcbe15d..0000000 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/api/TodosAPI.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.codingblocks.restapiretrofitjson.api; - -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; - -import com.codingblocks.restapiretrofitjson.models.Todo; - -import java.util.ArrayList; - -import retrofit2.Call; -import retrofit2.http.GET; -import retrofit2.http.Query; - -/** - * Created by championswimmer on 02/07/17. - */ - -public interface TodosAPI { - - @GET("/todos") - Call> getTodos( - @Nullable - @Query("userId") Integer userId - ); - - -} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/api/UsersAPI.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/api/UsersAPI.java deleted file mode 100644 index 190ebaa..0000000 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/api/UsersAPI.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.codingblocks.restapiretrofitjson.api; - -import com.codingblocks.restapiretrofitjson.models.User; - -import java.util.ArrayList; - -import retrofit2.Call; -import retrofit2.http.GET; - -/** - * Created by championswimmer on 29/06/17. - */ - -public interface UsersAPI { - - @GET("/users") - Call> getUsers(); -} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/AlbumApi.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/AlbumApi.java new file mode 100644 index 0000000..6cb2908 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/AlbumApi.java @@ -0,0 +1,28 @@ +package com.codingblocks.restapiretrofitjson.apis; + + +import com.codingblocks.restapiretrofitjson.models.Album; +import com.codingblocks.restapiretrofitjson.models.Photo; + +import java.util.ArrayList; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Path; + +/** + * Created by Suraj on 6/30/2017. + */ + +public interface AlbumApi { + + @GET("/albums") + Call> getAlbums(); + + interface PhotoApi{ + @GET("/albums/{albumId}/photos") + Call> getPhotosOfAlbumId( + @Path("albumId") int albumId + ); + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/api/CommentsAPI.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/CommentApi.java similarity index 61% rename from app/src/main/java/com/codingblocks/restapiretrofitjson/api/CommentsAPI.java rename to app/src/main/java/com/codingblocks/restapiretrofitjson/apis/CommentApi.java index 3f23b0f..56e950f 100644 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/api/CommentsAPI.java +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/CommentApi.java @@ -1,4 +1,5 @@ -package com.codingblocks.restapiretrofitjson.api; +package com.codingblocks.restapiretrofitjson.apis; + import com.codingblocks.restapiretrofitjson.models.Comment; @@ -9,17 +10,13 @@ import retrofit2.http.Query; /** - * Created by championswimmer on 29/06/17. + * Created by Suraj on 6/30/2017. */ -public interface CommentsAPI { - - @GET("/comments") - Call> getComments(); +public interface CommentApi { @GET("/comments") Call> getCommentsByPostId( @Query("postId") int postId ); - } diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/PhotoApi.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/PhotoApi.java new file mode 100644 index 0000000..b92d471 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/PhotoApi.java @@ -0,0 +1,21 @@ +package com.codingblocks.restapiretrofitjson.apis; + + +import com.codingblocks.restapiretrofitjson.models.Photo; + +import java.util.ArrayList; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; + +/** + * Created by Suraj on 6/30/2017. + */ + +public interface PhotoApi { + @GET("/photos") + Call> getPhotosByAlbumId( + @Query("albumId") int albumId + ); +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/api/PostsAPI.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/PostApi.java similarity index 57% rename from app/src/main/java/com/codingblocks/restapiretrofitjson/api/PostsAPI.java rename to app/src/main/java/com/codingblocks/restapiretrofitjson/apis/PostApi.java index e9a48a9..07bc954 100644 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/api/PostsAPI.java +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/PostApi.java @@ -1,4 +1,7 @@ -package com.codingblocks.restapiretrofitjson.api; +package com.codingblocks.restapiretrofitjson.apis; + +import android.support.annotation.Nullable; + import com.codingblocks.restapiretrofitjson.models.Comment; import com.codingblocks.restapiretrofitjson.models.Post; @@ -11,30 +14,28 @@ import retrofit2.http.Query; /** - * Created by championswimmer on 29/06/17. + * Created by Suraj on 6/30/2017. */ -public interface PostsAPI { +public interface PostApi { - @GET("/posts") - Call> getPosts(); +// @GET("/posts") +// Call> getPosts(); @GET("/posts/{id}") - Call getPostById( + Call> getPostsbyId( @Path("id") int id ); @GET("/posts") Call> getPostsByUserId( - @Query("userId") int userId + @Nullable + @Query("userId") Integer userId ); - - interface CommentsAPI { - - @GET("/posts/{postId}/comments") + interface CommentApi{ + @GET("posts/{postId}/comments/") Call> getCommentsOfPostId( @Path("postId") int postId ); - } } diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/RestApi.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/RestApi.java new file mode 100644 index 0000000..bab7dad --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/RestApi.java @@ -0,0 +1,63 @@ +package com.codingblocks.restapiretrofitjson.apis; + +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; + +/** + * Created by Suraj on 6/30/2017. + */ + +public class RestApi { + private static RestApi restApi; + private final Retrofit retrofit; + private final AlbumApi albumApi; + private final CommentApi commentApi; + private final PhotoApi photoApi; + private final PostApi postApi; + private final TodoApi todoApi; + private final UserApi userApi; + + public AlbumApi getAlbumApi() { + return albumApi; + } + + public CommentApi getCommentApi() { + return commentApi; + } + + public PhotoApi getPhotoApi() { + return photoApi; + } + + public PostApi getPostApi() { + return postApi; + } + + public TodoApi getTodoApi() { + return todoApi; + } + + public UserApi getUserApi() { + return userApi; + } + private RestApi(){ + retrofit = new Retrofit.Builder() + .baseUrl("https://jsonplaceholder.typicode.com") + .addConverterFactory( + GsonConverterFactory.create() + ) + .build(); + albumApi = retrofit.create(AlbumApi.class); + commentApi = retrofit.create(CommentApi.class); + photoApi = retrofit.create(PhotoApi.class); + postApi = retrofit.create(PostApi.class); + todoApi = retrofit.create(TodoApi.class); + userApi = retrofit.create(UserApi.class); + } + public static RestApi getInstance(){ + if(restApi==null){ + restApi = new RestApi(); + } + return restApi; + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/TodoApi.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/TodoApi.java new file mode 100644 index 0000000..11e6104 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/TodoApi.java @@ -0,0 +1,24 @@ +package com.codingblocks.restapiretrofitjson.apis; + + +import com.codingblocks.restapiretrofitjson.models.Todo; + +import java.util.ArrayList; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; + +/** + * Created by Suraj on 6/30/2017. + */ + +public interface TodoApi { + @GET("/todos") + Call> getTodos(); + + @GET("/todos") + Call> getTodosByUserId( + @Query("userId") int userId + ); +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/UserApi.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/UserApi.java new file mode 100644 index 0000000..a5c57d6 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/apis/UserApi.java @@ -0,0 +1,35 @@ +package com.codingblocks.restapiretrofitjson.apis; + + +import com.codingblocks.restapiretrofitjson.models.Post; +import com.codingblocks.restapiretrofitjson.models.Todo; +import com.codingblocks.restapiretrofitjson.models.User; + +import java.util.ArrayList; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Path; + +/** + * Created by Suraj on 6/30/2017. + */ + +public interface UserApi { + + @GET("/users") + Call> getUsers(); + + interface PostApi{ + @GET("/users/{userId}/posts") + Call> getPostsOfUserId( + @Path("userId") int userId + ); + } + interface TodoApi{ + @GET("/users/{userId}/todos") + Call> getTodosOfUserId( + @Path("userId") int userId + ); + } +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/interfaces/OnButtonClickListener.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/interfaces/OnButtonClickListener.java new file mode 100644 index 0000000..17144aa --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/interfaces/OnButtonClickListener.java @@ -0,0 +1,9 @@ +package com.codingblocks.restapiretrofitjson.interfaces; + +/** + * Created by Suraj on 6/30/2017. + */ + +public interface OnButtonClickListener { + void onButtonClicked(int Id, int buttonId); +} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/interfaces/OnItemClickListener.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/interfaces/OnItemClickListener.java deleted file mode 100644 index 63e6f5c..0000000 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/interfaces/OnItemClickListener.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.codingblocks.restapiretrofitjson.interfaces; - -import android.view.View; - -/** - * Created by championswimmer on 29/06/17. - */ - -public interface OnItemClickListener { - void onItemClick(int itemId, View view); -} diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/interfaces/OnPhotoClickListener.java b/app/src/main/java/com/codingblocks/restapiretrofitjson/interfaces/OnPhotoClickListener.java new file mode 100644 index 0000000..8d44a27 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/interfaces/OnPhotoClickListener.java @@ -0,0 +1,9 @@ +package com.codingblocks.restapiretrofitjson.interfaces; + +/** + * Created by Suraj on 6/30/2017. + */ + +public interface OnPhotoClickListener { + void onPhotoClicked(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..a6869f0 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Album.kt @@ -0,0 +1,11 @@ +package com.codingblocks.restapiretrofitjson.models + +/** + * Created by Suraj on 6/30/2017. + */ + +data class Album( + val userId: kotlin.Int, + val id: kotlin.Int, + val title: String +) \ No newline at end of file diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Comment.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Comment.kt index 932fdd9..ba606c3 100644 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Comment.kt +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Comment.kt @@ -1,9 +1,10 @@ package com.codingblocks.restapiretrofitjson.models /** - * Created by championswimmer on 29/06/17. + * Created by Suraj on 6/29/2017. */ -data class Comment( + +data class Comment ( val postId: Int, val id: Int, val name: String, diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Photo.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Photo.kt new file mode 100644 index 0000000..6c68255 --- /dev/null +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Photo.kt @@ -0,0 +1,13 @@ +package com.codingblocks.restapiretrofitjson.models + +/** + * Created by Suraj on 6/30/2017. + */ + +data class Photo( + val albumId: kotlin.Int, + val id: kotlin.Int, + val title: String, + val url: String, + val thumbnailUrl: String +) \ No newline at end of file diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Post.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Post.kt index f8a8746..156e866 100644 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Post.kt +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Post.kt @@ -1,10 +1,10 @@ package com.codingblocks.restapiretrofitjson.models /** - * Created by championswimmer on 29/06/17. + * Created by Suraj on 6/29/2017. */ -data class Post( +data class Post ( val userId: Int, val id: Int, val title: String, diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Todo.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Todo.kt index b5a3ff1..e4172f5 100644 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Todo.kt +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/models/Todo.kt @@ -1,9 +1,12 @@ package com.codingblocks.restapiretrofitjson.models /** - * Created by championswimmer on 02/07/17. + * Created by Suraj on 6/30/2017. */ -data class Todo ( - val id: Int, val userId: Int, - val title: String, val completed: Boolean + +data class Todo( + val userId: kotlin.Int, + val id: kotlin.Int, + val title: String, + val completed: kotlin.Boolean ) \ No newline at end of file diff --git a/app/src/main/java/com/codingblocks/restapiretrofitjson/models/User.kt b/app/src/main/java/com/codingblocks/restapiretrofitjson/models/User.kt index d8b192e..301adf0 100644 --- a/app/src/main/java/com/codingblocks/restapiretrofitjson/models/User.kt +++ b/app/src/main/java/com/codingblocks/restapiretrofitjson/models/User.kt @@ -1,12 +1,14 @@ package com.codingblocks.restapiretrofitjson.models /** - * Created by championswimmer on 29/06/17. + * Created by Suraj on 6/29/2017. */ + data class User( val id: Int, val username: String, val name: String, val email: String, val phone: String + ) \ No newline at end of file diff --git a/app/src/main/res/activity_album.xml b/app/src/main/res/activity_album.xml new file mode 100644 index 0000000..13faa3c --- /dev/null +++ b/app/src/main/res/activity_album.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/app/src/main/res/activity_comments.xml b/app/src/main/res/activity_comments.xml new file mode 100644 index 0000000..cb7d88b --- /dev/null +++ b/app/src/main/res/activity_comments.xml @@ -0,0 +1,16 @@ + + + + + + + diff --git a/app/src/main/res/activity_main.xml b/app/src/main/res/activity_main.xml new file mode 100644 index 0000000..c0d99a1 --- /dev/null +++ b/app/src/main/res/activity_main.xml @@ -0,0 +1,66 @@ + + + + +