CommentAdapter.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package club.thepenguins.android.adapters;
  2. import android.annotation.SuppressLint;
  3. import android.content.Context;
  4. import android.text.Html;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.ImageView;
  9. import android.widget.TextView;
  10. import androidx.annotation.NonNull;
  11. import androidx.cardview.widget.CardView;
  12. import androidx.recyclerview.widget.RecyclerView;
  13. import com.squareup.picasso.Callback;
  14. import com.squareup.picasso.NetworkPolicy;
  15. import com.squareup.picasso.Picasso;
  16. import java.util.ArrayList;
  17. import club.thepenguins.android.R;
  18. import club.thepenguins.android.data.CommentModel;
  19. public class CommentAdapter extends RecyclerView.Adapter<CommentAdapter.ViewHolder> {
  20. private ArrayList<CommentModel> data;
  21. private Context ctx;
  22. public CommentAdapter(ArrayList<CommentModel> list, Context context) {
  23. this.data = list;
  24. this.ctx = context;
  25. }
  26. @NonNull
  27. @Override
  28. public CommentAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  29. View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.comment_item, parent, false);
  30. return new CommentAdapter.ViewHolder(view);
  31. }
  32. @SuppressLint("SetTextI18n")
  33. @Override
  34. public void onBindViewHolder(@NonNull CommentAdapter.ViewHolder holder, int position) {
  35. final CommentModel object = data.get(position);
  36. holder.author.setText(object.getAuthor());
  37. holder.comment.setText("\n" + Html.fromHtml(object.getContent()));
  38. holder.time.setText(object.getTime());
  39. Picasso.get()
  40. .load(object.getImage())
  41. .placeholder(R.color.shimmer_placeholder)
  42. .fit()
  43. .centerCrop()
  44. .networkPolicy(NetworkPolicy.OFFLINE)
  45. .into(holder.imageView, new Callback() {
  46. @Override
  47. public void onSuccess() {
  48. }
  49. @Override
  50. public void onError(Exception e) {
  51. Picasso.get()
  52. .load(object.getImage())
  53. .placeholder(R.color.shimmer_placeholder)
  54. .fit()
  55. .centerCrop()
  56. .into(holder.imageView);
  57. }
  58. });
  59. }
  60. public void clear() {
  61. data.clear();
  62. notifyDataSetChanged();
  63. }
  64. public void addAll(ArrayList<CommentModel> list) {
  65. list.addAll(list);
  66. notifyDataSetChanged();
  67. }
  68. @Override
  69. public int getItemCount() {
  70. return data.size();
  71. }
  72. public class ViewHolder extends RecyclerView.ViewHolder {
  73. TextView author, comment, time;
  74. CardView cardView;
  75. ImageView imageView;
  76. public ViewHolder(@NonNull View itemView) {
  77. super(itemView);
  78. cardView = itemView.findViewById(R.id.commentCard);
  79. imageView = itemView.findViewById(R.id.commenterImage);
  80. author = itemView.findViewById(R.id.author);
  81. comment = itemView.findViewById(R.id.comment);
  82. time = itemView.findViewById(R.id.commentTime);
  83. }
  84. }
  85. public void setData(ArrayList<CommentModel> data) {
  86. this.data = data;
  87. notifyDataSetChanged();
  88. }
  89. }