package com.xscm.modulemain.adapter; import android.util.SparseBooleanArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.xscm.modulemain.R; import com.makeramen.roundedimageview.RoundedImageView; import com.xscm.moduleutil.bean.room.RoomApplyListBean; import com.xscm.moduleutil.color.ThemeableDrawableUtils; import com.xscm.moduleutil.utils.ColorManager; import com.xscm.moduleutil.utils.ImageUtils; import java.util.ArrayList; import java.util.List; public class WheatFeedingSelectAdapter extends RecyclerView.Adapter { private final List mData; private final List mSelectedPositions = new ArrayList<>(); private SparseBooleanArray selectedPositions = new SparseBooleanArray(); public WheatFeedingSelectAdapter(List data) { this.mData = data; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_wheat_feeding_select, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { RoomApplyListBean.Special item = mData.get(position); boolean isSelected = selectedPositions.get(position, false); holder.nickname.setText(item.getNickname()); holder.jin_e.setText(item.getRank_value()); ImageUtils.loadHeadCC(item.getAvatar(), holder.userAvatar); ThemeableDrawableUtils.setThemeableRoundedBackground(holder.tv_bm, ColorManager.getInstance().getPrimaryColorInt(), 65); holder.tv_bm.setTextColor(ColorManager.getInstance().getButtonColorInt()); holder.checkbox.setSelected(isSelected); holder.checkbox.setOnClickListener(v -> { boolean newState = !isSelected; selectedPositions.put(position, newState); holder.checkbox.setSelected(newState); notifyItemChanged(position); // 刷新当前项 if (newState) { mSelectedPositions.add(position); } else { mSelectedPositions.remove(Integer.valueOf(position)); // 修改这里 } }); holder.tv_bm.setOnClickListener(v -> { if (onItemClickListener != null) { onItemClickListener.onTvBmClick(item,position); } }); // holder.itemView.setOnClickListener(v -> toggleSelection(position)); } public interface OnItemClickListener { void onTvBmClick(RoomApplyListBean.Special item,int position); } private OnItemClickListener onItemClickListener; public void setOnItemClickListener(OnItemClickListener listener) { this.onItemClickListener = listener; } public void toggleSelection(int position) { if (mSelectedPositions.contains(position)) { mSelectedPositions.remove(Integer.valueOf(position)); } else { mSelectedPositions.add(position); } notifyItemChanged(position); } public List getSelectedItems() { List selected = new ArrayList<>(); for (int pos : mSelectedPositions) { selected.add(mData.get(pos).getUser_id()); } return selected; } @Override public int getItemCount() { return mData.size(); } static class ViewHolder extends RecyclerView.ViewHolder { RoundedImageView userAvatar; TextView nickname; TextView jin_e; TextView tv_bm; View checkbox ; public ViewHolder(@NonNull View itemView) { super(itemView); userAvatar = itemView.findViewById(R.id.user_avatar); nickname = itemView.findViewById(R.id.nick_name); jin_e = itemView.findViewById(R.id.jin_e); tv_bm = itemView.findViewById(R.id.tv_bm); checkbox = itemView.findViewById(R.id.v_checkbox); } } }