diff --git a/app/build.gradle b/app/build.gradle
index d1662991d03d41c184882a281d2f2c2ed38f3c58..aeb8dc93c43b68c5be3bb7c52a467dacab25e171 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -61,4 +61,7 @@ dependencies {
implementation 'io.reactivex.rxjava2:rxjava:2.2.21'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
+ // Glide
+ implementation 'com.github.bumptech.glide:glide:4.11.0'
+
}
\ No newline at end of file
diff --git a/app/src/main/java/fr/delcroix_dupont/HomeAdapter.java b/app/src/main/java/fr/delcroix_dupont/HomeAdapter.java
new file mode 100644
index 0000000000000000000000000000000000000000..e2b949ace527968a6bb958f8f5d257d333964b91
--- /dev/null
+++ b/app/src/main/java/fr/delcroix_dupont/HomeAdapter.java
@@ -0,0 +1,30 @@
+package fr.delcroix_dupont;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import fr.delcroix_dupont.api.post.Child;
+
+public abstract class HomeAdapter extends RecyclerView.Adapter<MyViewHolder>{
+
+ protected List<Child> posts;
+
+ public HomeAdapter(List<Child> posts){
+ this.posts = posts;
+ }
+
+ public HomeAdapter(){
+ this.posts = new ArrayList<Child>();
+ }
+
+ public void setRedditPostData(List<Child> posts) {
+ this.posts = posts;
+ notifyDataSetChanged();
+ }
+
+ public List<Child> getPosts(){
+ return this.posts;
+ }
+}
diff --git a/app/src/main/java/fr/delcroix_dupont/HomeGridAdapter.java b/app/src/main/java/fr/delcroix_dupont/HomeGridAdapter.java
index 95434a2bc55f8df56a2e22219501d080cc82de29..238218eb13ba1a6afa4ff8eac7be1a9abb9ff629 100644
--- a/app/src/main/java/fr/delcroix_dupont/HomeGridAdapter.java
+++ b/app/src/main/java/fr/delcroix_dupont/HomeGridAdapter.java
@@ -5,14 +5,25 @@ import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-public class HomeGridAdapter extends RecyclerView.Adapter<MyViewHolder> {
- private String[] authors;
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
+
+import java.util.List;
+
+import fr.delcroix_dupont.api.post.Child;
+
+public class HomeGridAdapter extends HomeAdapter {
private MainActivity main;
- public HomeGridAdapter(MainActivity main, String[] authors){
- this.main = main; this.authors = authors;
+ public HomeGridAdapter(MainActivity main, List<Child> posts){
+ super(posts);
+ this.main = main;
+ }
+
+ public HomeGridAdapter(MainActivity main){
+ super();
+ this.main = main;
}
@NonNull
@@ -26,12 +37,17 @@ public class HomeGridAdapter extends RecyclerView.Adapter<MyViewHolder> {
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
- holder.getAuthorButton().setText(authors[position]);
+ holder.getAuthorButton().setText(this.posts.get(position).getData().getAuthor());
+ Glide.with(main)
+ .load(this.posts.get(position).getData().getThumbnail())
+ .centerCrop()
+ .transition(DrawableTransitionOptions.withCrossFade())
+ .into(holder.getImg());
}
@Override
public int getItemCount() {
- return authors.length;
+ return this.posts.size();
}
}
diff --git a/app/src/main/java/fr/delcroix_dupont/HomeListAdapter.java b/app/src/main/java/fr/delcroix_dupont/HomeListAdapter.java
index e0b4054c3e6bb948b2f1044e2fb3566d162c295e..fd4d66a84fe378b96e8c936f1e4855fc9ac4500e 100644
--- a/app/src/main/java/fr/delcroix_dupont/HomeListAdapter.java
+++ b/app/src/main/java/fr/delcroix_dupont/HomeListAdapter.java
@@ -1,23 +1,31 @@
package fr.delcroix_dupont;
-import androidx.recyclerview.widget.RecyclerView;
import android.view.ViewGroup;
import android.view.*;
import androidx.annotation.NonNull;
+import java.util.List;
+
+import fr.delcroix_dupont.api.post.Child;
import fr.delcroix_dupont.ui.home.author.FragmentAuthor;
-public class HomeListAdapter extends RecyclerView.Adapter<MyViewHolder> {
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
+
+public class HomeListAdapter extends HomeAdapter {
private MainActivity main;
private FragmentAuthor fragmentAuthor;
- private String[] authors, upvotes, downvotes;
- public HomeListAdapter(MainActivity main, String[] authors, String[] upvotes, String[] downvotes){
+ public HomeListAdapter(MainActivity main, List<Child> posts){
+ super(posts);
+ this.main = main;
+ fragmentAuthor = null;
+ }
+
+ public HomeListAdapter(MainActivity main){
+ super();
this.main = main;
- this.authors = authors;
- this.upvotes = upvotes;
- this.downvotes = downvotes;
fragmentAuthor = null;
}
@@ -32,14 +40,19 @@ public class HomeListAdapter extends RecyclerView.Adapter<MyViewHolder> {
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
- holder.getAuthorButton().setText(authors[position]);
- holder.getUpvotes().setText(upvotes[position]);
- holder.getDownvotes().setText(downvotes[position]);
+ holder.getAuthorButton().setText(this.posts.get(position).getData().getAuthor());
+ holder.getUpvotes().setText(this.posts.get(position).getData().getUps().toString());
+ holder.getDownvotes().setText(this.posts.get(position).getData().getDowns().toString());
+ Glide.with(main)
+ .load(this.posts.get(position).getData().getThumbnail())
+ .centerCrop()
+ .transition(DrawableTransitionOptions.withCrossFade())
+ .into(holder.getImg());
}
@Override
public int getItemCount() {
- return authors.length;
+ return this.posts.size();
}
}
diff --git a/app/src/main/java/fr/delcroix_dupont/MainActivity.java b/app/src/main/java/fr/delcroix_dupont/MainActivity.java
index a67b91259027119f0846da1c0f8136446584b42a..43c4cc26ab3bf4dd6833f59b952a9aa4566b8d98 100644
--- a/app/src/main/java/fr/delcroix_dupont/MainActivity.java
+++ b/app/src/main/java/fr/delcroix_dupont/MainActivity.java
@@ -80,6 +80,7 @@ public class MainActivity extends AppCompatActivity {
call.enqueue(new Callback<RedditPost>() {
@Override
public void onResponse(Call<RedditPost> call, Response<RedditPost> response) {
+ homeFragment.setRedditPostData(response.body().getData().getChildren());
}
@Override
diff --git a/app/src/main/java/fr/delcroix_dupont/MyViewHolder.java b/app/src/main/java/fr/delcroix_dupont/MyViewHolder.java
index a2d6d2667ce8995cf24fa80f696db8acac4a9c2b..73708c6b6c5cac9641723db9b1ababc8e5602847 100644
--- a/app/src/main/java/fr/delcroix_dupont/MyViewHolder.java
+++ b/app/src/main/java/fr/delcroix_dupont/MyViewHolder.java
@@ -2,6 +2,7 @@ package fr.delcroix_dupont;
import android.view.View;
import android.widget.Button;
+import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
@@ -12,6 +13,7 @@ import fr.delcroix_dupont.ui.home.author.FragmentAuthor;
public class MyViewHolder extends RecyclerView.ViewHolder {
private final Button authorButton;
private final TextView upvotes, downvotes;
+ private final ImageView img;
private final MainActivity main;
public MyViewHolder(MainActivity main, @NonNull View itemView) {
@@ -20,6 +22,7 @@ public class MyViewHolder extends RecyclerView.ViewHolder {
this.authorButton = (Button) itemView.findViewById(R.id.authorButton);
this.upvotes = (TextView) itemView.findViewById(R.id.nbUpvotes);
this.downvotes = (TextView) itemView.findViewById(R.id.nbDownvotes);
+ this.img = (ImageView) itemView.findViewById(R.id.imageView);
setupListener();
}
@@ -40,4 +43,6 @@ public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView getDownvotes(){
return this.downvotes;
}
+
+ public ImageView getImg() { return this.img; }
}
diff --git a/app/src/main/java/fr/delcroix_dupont/api/post/Data__1.java b/app/src/main/java/fr/delcroix_dupont/api/post/Data__1.java
index 05efe79b650462772b44c1193470b4d9d64da9a9..0061af216d731780a2fd3f4c8c1432470efe5f9d 100644
--- a/app/src/main/java/fr/delcroix_dupont/api/post/Data__1.java
+++ b/app/src/main/java/fr/delcroix_dupont/api/post/Data__1.java
@@ -14,6 +14,9 @@ public class Data__1 {
@SerializedName("downs")
@Expose
private Integer downs;
+ @SerializedName("thumbnail")
+ @Expose
+ private String thumbnail;
@SerializedName("name")
@Expose
private String name;
@@ -69,6 +72,14 @@ public class Data__1 {
this.downs = downs;
}
+ public String getThumbnail() {
+ return thumbnail;
+ }
+
+ public void setThumbnail(String thumbnail) {
+ this.thumbnail = thumbnail;
+ }
+
public String getName() {
return name;
}
diff --git a/app/src/main/java/fr/delcroix_dupont/api/user/Data.java b/app/src/main/java/fr/delcroix_dupont/api/user/Data.java
index 6212ed14fa50bfb67522d8733cec2576df162516..bc047538d5a1f93f53404b9b704c39314060304c 100644
--- a/app/src/main/java/fr/delcroix_dupont/api/user/Data.java
+++ b/app/src/main/java/fr/delcroix_dupont/api/user/Data.java
@@ -1,5 +1,8 @@
package fr.delcroix_dupont.api.user;
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
import java.util.List;
public class Data {
diff --git a/app/src/main/java/fr/delcroix_dupont/api/user/RedditUser.java b/app/src/main/java/fr/delcroix_dupont/api/user/RedditUser.java
index 1a9c84d312a05966ae059d81ff114fc2ab4bfa4b..674621847ae8f1d9ca761504998b636eeef1fd6d 100644
--- a/app/src/main/java/fr/delcroix_dupont/api/user/RedditUser.java
+++ b/app/src/main/java/fr/delcroix_dupont/api/user/RedditUser.java
@@ -1,5 +1,8 @@
package fr.delcroix_dupont.api.user;
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
public class RedditUser {
@SerializedName("date")
diff --git a/app/src/main/java/fr/delcroix_dupont/ui/home/HomeFragment.java b/app/src/main/java/fr/delcroix_dupont/ui/home/HomeFragment.java
index e0f011ad2b2a87413a0c175a6421fbf18e9137fb..77f6ded81b4aa7c4b4984e346461ff4ce3e04ee2 100644
--- a/app/src/main/java/fr/delcroix_dupont/ui/home/HomeFragment.java
+++ b/app/src/main/java/fr/delcroix_dupont/ui/home/HomeFragment.java
@@ -13,10 +13,14 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
+import java.util.List;
+
+import fr.delcroix_dupont.HomeAdapter;
import fr.delcroix_dupont.HomeGridAdapter;
import fr.delcroix_dupont.HomeListAdapter;
import fr.delcroix_dupont.MainActivity;
import fr.delcroix_dupont.R;
+import fr.delcroix_dupont.api.post.Child;
import fr.delcroix_dupont.databinding.FragmentHomeBinding;
public class HomeFragment extends Fragment {
@@ -24,7 +28,7 @@ public class HomeFragment extends Fragment {
private FragmentHomeBinding binding;
private RecyclerView recyclerView;
private RecyclerView.LayoutManager layoutManager;
- private HomeListAdapter customAdapter;
+ private HomeAdapter adapter;
private View root;
private ImageButton switchButton;
private MainActivity main;
@@ -33,10 +37,6 @@ public class HomeFragment extends Fragment {
private boolean isList;
- private String[] authors = new String[]{"MiraakTV", "BoBsmil3Y", "MiraakTélévision", "Bobmarl3y", "Moi"};
- private String[] upvotes = new String[]{"0", "0", "999", "999", "235"};
- private String[] downvotes = new String[]{"999", "999", "0", "0", "3534"};
-
public HomeFragment(MainActivity main) { this.main = main; }
public View onCreateView(@NonNull LayoutInflater inflater,
@@ -73,7 +73,8 @@ public class HomeFragment extends Fragment {
public void switchGridList(){
this.recyclerView.setLayoutManager(this.isList ? this.gridLayoutManager : this.linearLayoutManager);
- this.recyclerView.setAdapter(this.isList ? new HomeGridAdapter(this.main, this.authors) : new HomeListAdapter(this.main, this.authors, this.upvotes, this.downvotes));
+ this.adapter = this.isList ? new HomeGridAdapter(this.main, this.adapter.getPosts()) : new HomeListAdapter(this.main, this.adapter.getPosts());
+ this.recyclerView.setAdapter(this.adapter);
this.switchButton.setImageResource(this.isList ? R.drawable.list : R.drawable.menu);
this.isList = !this.isList;
}
@@ -87,8 +88,12 @@ public class HomeFragment extends Fragment {
layoutManager = new LinearLayoutManager(root.getContext());
recyclerView.setLayoutManager(layoutManager);
- customAdapter = new HomeListAdapter(main, authors, upvotes, downvotes);
- recyclerView.setAdapter(customAdapter);
+ adapter = new HomeListAdapter(main);
+ recyclerView.setAdapter(adapter);
+ }
+
+ public void setRedditPostData(List<Child> posts){
+ adapter.setRedditPostData(posts);
}
@Override