package com.example.livestreaming; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; import java.util.List; /** * 频道管理适配器 * 用于显示我的频道和推荐频道 */ public class ChannelManagerAdapter extends RecyclerView.Adapter { public interface OnChannelClickListener { void onChannelClick(ChannelItem item, int position); void onChannelDelete(ChannelItem item, int position); void onChannelAdd(ChannelItem item, int position); } private final List items = new ArrayList<>(); private OnChannelClickListener listener; private boolean isEditMode = false; private boolean isRecommendMode = false; // 是否是推荐频道模式 private int fixedCount = 4; // 前4个固定不能删除 public void setOnChannelClickListener(OnChannelClickListener listener) { this.listener = listener; } public void setEditMode(boolean editMode) { this.isEditMode = editMode; notifyDataSetChanged(); } public void setRecommendMode(boolean recommendMode) { this.isRecommendMode = recommendMode; } public void setFixedCount(int count) { this.fixedCount = count; } public void submitList(List newItems) { items.clear(); if (newItems != null) { items.addAll(newItems); } notifyDataSetChanged(); } public List getItems() { return new ArrayList<>(items); } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_channel_tag, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { ChannelItem item = items.get(position); holder.bind(item, position); } @Override public int getItemCount() { return items.size(); } class ViewHolder extends RecyclerView.ViewHolder { private final TextView channelName; private final ImageView fixedIcon; private final ImageView deleteIcon; private final ImageView addIcon; ViewHolder(@NonNull View itemView) { super(itemView); channelName = itemView.findViewById(R.id.channelName); fixedIcon = itemView.findViewById(R.id.fixedIcon); deleteIcon = itemView.findViewById(R.id.deleteIcon); addIcon = itemView.findViewById(R.id.addIcon); } void bind(ChannelItem item, int position) { channelName.setText(item.getName()); // 重置所有图标状态 fixedIcon.setVisibility(View.GONE); deleteIcon.setVisibility(View.GONE); addIcon.setVisibility(View.GONE); if (isRecommendMode) { // 推荐频道模式:显示添加图标 addIcon.setVisibility(View.VISIBLE); itemView.setOnClickListener(v -> { if (listener != null) { listener.onChannelAdd(item, position); } }); } else { // 我的频道模式 boolean isFixed = position < fixedCount; if (isEditMode) { // 编辑模式 if (isFixed) { fixedIcon.setVisibility(View.VISIBLE); } else { deleteIcon.setVisibility(View.VISIBLE); deleteIcon.setOnClickListener(v -> { if (listener != null) { listener.onChannelDelete(item, position); } }); } } itemView.setOnClickListener(v -> { if (listener != null) { listener.onChannelClick(item, position); } }); } } } /** * 频道项数据类 */ public static class ChannelItem { private final String id; private final String name; private boolean isFixed; public ChannelItem(String id, String name) { this.id = id; this.name = name; this.isFixed = false; } public ChannelItem(String id, String name, boolean isFixed) { this.id = id; this.name = name; this.isFixed = isFixed; } public String getId() { return id; } public String getName() { return name; } public boolean isFixed() { return isFixed; } public void setFixed(boolean fixed) { this.isFixed = fixed; } } }