CommentItemAdapter.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package com.edufound.reader.adapter;
  2. import android.content.Context;
  3. import android.view.LayoutInflater;
  4. import android.view.View;
  5. import android.view.ViewGroup;
  6. import android.widget.ImageView;
  7. import android.widget.LinearLayout;
  8. import android.widget.TextView;
  9. import com.edufound.reader.R;
  10. import com.edufound.reader.bean.CommentListReplyBean;
  11. import com.edufound.reader.util.GlideUtils;
  12. import com.edufound.reader.util.TimeUtil;
  13. import com.jakewharton.rxbinding4.view.RxView;
  14. import com.orhanobut.logger.Logger;
  15. import java.util.List;
  16. import java.util.concurrent.TimeUnit;
  17. import androidx.annotation.NonNull;
  18. import androidx.recyclerview.widget.RecyclerView;
  19. import io.reactivex.rxjava3.core.Observer;
  20. import io.reactivex.rxjava3.disposables.Disposable;
  21. import io.reactivex.rxjava3.functions.Consumer;
  22. import kotlin.Unit;
  23. public class CommentItemAdapter extends RecyclerView.Adapter<CommentItemHolder> {
  24. private LayoutInflater mLayoutInflater;
  25. private Context mContext;
  26. private List<CommentListReplyBean> mListData;
  27. private onItemClickListener mItemClickListener;
  28. public CommentItemAdapter(Context context, List<CommentListReplyBean> listData) {
  29. mContext = context;
  30. mLayoutInflater = LayoutInflater.from(context);
  31. mListData = listData;
  32. }
  33. @NonNull
  34. @Override
  35. public CommentItemHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  36. return new CommentItemHolder(mLayoutInflater.inflate(R.layout.adapter_item_comment, parent, false));
  37. }
  38. public void onItemClickThumb(onItemClickListener listener) {
  39. mItemClickListener = listener;
  40. }
  41. @Override
  42. public void onBindViewHolder(@NonNull CommentItemHolder holder, int position) {
  43. GlideUtils.loadCircleImage(mContext, mListData.get(position).getUser().getAvatar(), holder.mUserHead);
  44. holder.mNickName.setText("昵称:" + mListData.get(position).getUser().getNickName());
  45. holder.mCommentText.setText(mListData.get(position).getDetailDesc());
  46. if (mListData.get(position).getGmtCreated() != null) {
  47. holder.mItemTime.setText("" + TimeUtil.timeStamp2Date(Long.valueOf(mListData.get(position).getGmtCreated()), "MM-dd"));
  48. }
  49. Logger.e("index=" + position + "--mListData.get(position).getIsLike():" + mListData.get(position).getIsLike());
  50. if (mListData.get(position).getIsLike()) {
  51. holder.mThumbStatus.setImageResource(R.drawable.adapter_item_comment_item_thumb_true);
  52. } else {
  53. holder.mThumbStatus.setImageResource(R.drawable.adapter_item_comment_item_thumb_false);
  54. }
  55. holder.mThumbNum.setText(mListData.get(position).getLikeCount() != null ? mListData.get(position).getLikeCount() : "0");
  56. if (mItemClickListener != null) {
  57. RxView.clicks(holder.mReCommentLayout).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
  58. mItemClickListener.clickItemReComment(holder.mReCommentLayout, mListData.get(position).getId(), position);
  59. });
  60. }
  61. if (mItemClickListener != null) {
  62. RxView.clicks(holder.mThumbLayout).throttleFirst(2, TimeUnit.SECONDS).subscribe(o -> {
  63. mItemClickListener.clickItemThumb(holder.mThumbLayout, mListData.get(position).getId(), position);
  64. });
  65. }
  66. if (mListData.get(position).getReplyVOList() != null && mListData.get(position).getReplyVOList().size() > 0) {
  67. holder.mReLayout.removeAllViews();
  68. for (CommentListReplyBean.ReplyVOList item : mListData.get(position).getReplyVOList()) {
  69. //有回复
  70. View view = mLayoutInflater.inflate(R.layout.adapter_item_comment_relayout_item, null);
  71. TextView name = view.findViewById(R.id.adapter_item_comment_item_relayout_name);
  72. TextView comment = view.findViewById(R.id.adapter_item_comment_item_relayout_comment);
  73. name.setText(item.getUser().getNickName() + ":");
  74. comment.setText(item.getContent());
  75. holder.mReLayout.addView(view);
  76. holder.mReLayout.setVisibility(View.VISIBLE);
  77. }
  78. } else {
  79. holder.mReLayout.setVisibility(View.GONE);
  80. }
  81. }
  82. @Override
  83. public int getItemCount() {
  84. return mListData.size();
  85. }
  86. @Override
  87. public int getItemViewType(int position) {
  88. return position;
  89. }
  90. public interface onItemClickListener {
  91. void clickItemThumb(View view, String id, int position);
  92. void clickItemReComment(View view, String id, int position);
  93. }
  94. }
  95. class CommentItemHolder extends RecyclerView.ViewHolder {
  96. TextView mNickName;
  97. TextView mCommentText;
  98. LinearLayout mReLayout;
  99. ImageView mUserHead;
  100. LinearLayout mThumbLayout;
  101. LinearLayout mReCommentLayout;
  102. TextView mThumbNum;
  103. ImageView mThumbStatus;
  104. TextView mItemTime;
  105. public CommentItemHolder(@NonNull View itemView) {
  106. super(itemView);
  107. mNickName = itemView.findViewById(R.id.adapter_item_comment_item_nickname);
  108. mCommentText = itemView.findViewById(R.id.adapter_item_comment_item_comment);
  109. mReLayout = itemView.findViewById(R.id.adapter_item_comment_item_relayout);
  110. mUserHead = itemView.findViewById(R.id.adapter_item_comment_item_userhead);
  111. mThumbLayout = itemView.findViewById(R.id.adapter_item_comment_item_comment_thumb_layout);
  112. mThumbNum = itemView.findViewById(R.id.adapter_item_comment_item_comment_thumb_layout_thumbnum);
  113. mThumbStatus = itemView.findViewById(R.id.adapter_item_comment_item_comment_thumb_layout_img_status);
  114. mReCommentLayout = itemView.findViewById(R.id.adapter_item_comment_item_comment_recomment_layout);
  115. mItemTime = itemView.findViewById(R.id.adapter_item_comment_item_time);
  116. }
  117. }