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

126 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.text.TextUtils;
import android.view.View;
import android.widget.CheckBox;
import androidx.annotation.NonNull;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
2025-10-28 16:56:13 +08:00
import com.xscm.modulemain.R;
2025-10-20 10:16:44 +08:00
import com.xscm.moduleutil.bean.AlbumBean;
import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.widget.img.FullScreenUtil;
import java.util.ArrayList;
import java.util.List;
public class AlbumPhotoAdapter extends BaseMultiItemQuickAdapter<AlbumBean.ImageList, BaseViewHolder> {
private boolean isControlVisible = false;
private List<Integer> selectedPositions = new ArrayList<>(); // 保存选中的 position
// private SparseBooleanArray selectedPositions = new SparseBooleanArray();
public AlbumPhotoAdapter(List<AlbumBean.ImageList> data) {
super(data);
addItemType(1, R.layout.item_group);
addItemType(2, R.layout.item_photo);
}
public void showControl() {
isControlVisible = true;
notifyDataSetChanged(); // 刷新列表以更新 UI
}
public void hideControl() {
isControlVisible = false;
notifyDataSetChanged(); // 刷新列表以更新 UI
}
@Override
protected void convert(BaseViewHolder helper, AlbumBean.ImageList item) {
if (item.getItemType() == 1) {
helper.setText(R.id.tv_date, item.getCreatetime());
} else {
ImageUtils.loadHeadCC(item.getImage(), helper.getView(R.id.iv_photo));
helper.setVisible(R.id.tb_photo, isControlVisible);
helper.setVisible(R.id.v_checkbox, isControlVisible);
View vCheckbox = helper.getView(R.id.v_checkbox);
vCheckbox.setSelected(item.isSelected());
vCheckbox.setOnClickListener(v -> {
boolean isSelected = !item.isSelected(); // 切换当前状态
item.setSelected(isSelected);
vCheckbox.setSelected(isSelected);
// notifyItemChanged(helper.getBindingAdapterPosition()); // 刷新整个列表确保状态正确
});
helper.getView(R.id.tb_photo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isSelected = !item.isSelected();
item.setSelected(isSelected);
vCheckbox.setSelected(isSelected);
// notifyItemChanged(helper.getBindingAdapterPosition()); // 刷新整个列表确保状态正确
}
});
helper.getView(R.id.iv_photo).setOnClickListener(v -> {
FullScreenUtil.showFullScreenDialog(mContext,helper.getPosition(),getImageList() );
});
}
}
public List<String> getImageList(){
List<String> stringList=new ArrayList<>();
for (AlbumBean.ImageList item : getData()) {
if (item.getItemType() == 2) {
stringList.add(item.getImage());
}
}
return stringList;
}
public List<AlbumBean.ImageList> getSelectedItems() {
List<AlbumBean.ImageList> selectedItems = new ArrayList<>();
for (AlbumBean.ImageList item : getData()) {
if (item.isSelected()) {
selectedItems.add(item);
}
}
return selectedItems;
}
public String getSelectedPhotoIdsAsString() {
List<AlbumBean.ImageList> selectedPhotos = getSelectedItems();
List<String> idList = new ArrayList<>();
for (AlbumBean.ImageList photo : selectedPhotos) {
idList.add(photo.getId()); // 将每个 id 添加进 list
}
return TextUtils.join(",", idList); // 使用逗号拼接
}
public void clearSelections() {
for (AlbumBean.ImageList item : getData()) {
item.setSelected(false);
}
notifyDataSetChanged();
}
@Override
public void onViewRecycled(@NonNull BaseViewHolder holder) {
super.onViewRecycled(holder);
View vCheckbox = holder.getView(R.id.v_checkbox);
if (vCheckbox instanceof CheckBox) {
((CheckBox) vCheckbox).setChecked(false);
}
}
}