package com.example.livestreaming; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.DiffUtil; import androidx.recyclerview.widget.ListAdapter; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import de.hdodenhof.circleimageview.CircleImageView; /** * 好友请求列表适配器 */ public class FriendRequestAdapter extends ListAdapter { public interface OnRequestActionListener { void onAccept(FriendRequestItem item, int position); void onReject(FriendRequestItem item, int position); } private OnRequestActionListener actionListener; public FriendRequestAdapter() { super(DIFF_CALLBACK); } public void setOnRequestActionListener(OnRequestActionListener listener) { this.actionListener = listener; } private static final DiffUtil.ItemCallback DIFF_CALLBACK = new DiffUtil.ItemCallback() { @Override public boolean areItemsTheSame(@NonNull FriendRequestItem oldItem, @NonNull FriendRequestItem newItem) { return oldItem.getRequestId() == newItem.getRequestId(); } @Override public boolean areContentsTheSame(@NonNull FriendRequestItem oldItem, @NonNull FriendRequestItem newItem) { return oldItem.equals(newItem); } }; @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_friend_request, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { FriendRequestItem item = getItem(position); if (item == null) return; holder.name.setText(item.getNickname() != null ? item.getNickname() : "未知用户"); holder.message.setText(item.getDisplayMessage()); // 加载头像 if (item.getAvatarUrl() != null && !item.getAvatarUrl().isEmpty()) { Glide.with(holder.avatar.getContext()) .load(item.getAvatarUrl()) .placeholder(R.drawable.ic_account_circle_24) .error(R.drawable.ic_account_circle_24) .into(holder.avatar); } else { holder.avatar.setImageResource(R.drawable.ic_account_circle_24); } holder.acceptButton.setOnClickListener(v -> { if (actionListener != null) { actionListener.onAccept(item, holder.getAdapterPosition()); } }); holder.rejectButton.setOnClickListener(v -> { if (actionListener != null) { actionListener.onReject(item, holder.getAdapterPosition()); } }); } static class ViewHolder extends RecyclerView.ViewHolder { CircleImageView avatar; TextView name; TextView message; TextView acceptButton; TextView rejectButton; ViewHolder(@NonNull View itemView) { super(itemView); avatar = itemView.findViewById(R.id.avatar); name = itemView.findViewById(R.id.name); message = itemView.findViewById(R.id.message); acceptButton = itemView.findViewById(R.id.acceptButton); rejectButton = itemView.findViewById(R.id.rejectButton); } } }