Files
yusheng-android/MainModule/src/main/java/com/xscm/modulemain/adapter/WheatFeedingSelectAdapter.java

117 lines
4.2 KiB
Java
Raw Normal View History

2025-10-28 16:56:13 +08:00
package com.xscm.modulemain.adapter;
2025-10-20 10:16:44 +08:00
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;
2025-10-28 16:56:13 +08:00
import com.xscm.modulemain.R;
2025-10-20 10:16:44 +08:00
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<WheatFeedingSelectAdapter.ViewHolder> {
private final List<RoomApplyListBean.Special> mData;
private final List<Integer> mSelectedPositions = new ArrayList<>();
private SparseBooleanArray selectedPositions = new SparseBooleanArray();
public WheatFeedingSelectAdapter(List<RoomApplyListBean.Special> 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 {
2025-10-24 17:52:11 +08:00
mSelectedPositions.remove(Integer.valueOf(position)); // 修改这里
2025-10-20 10:16:44 +08:00
}
});
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<String> getSelectedItems() {
List<String> 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);
}
}
}