126 lines
4.2 KiB
Java
126 lines
4.2 KiB
Java
package com.xscm.modulemain.adapter;
|
|
|
|
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;
|
|
import com.xscm.modulemain.R;
|
|
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);
|
|
}
|
|
}
|
|
} |