释放双眼,带上耳机,听听看~!
昨天做照片墙的全选和反选功能时,一直有bug出现,后来花了一些时间,终于是做出来了。
1.在已经完成照片墙的adapter内,加入选择图片的ListmSelectedImg 变量,
private List mSelectedImg = new ArrayList<>();
2,然后在public View getView(final int position, View convertView, ViewGroup parent)内加入判断图片是否选中的if语句
if (mSelectedImg.contains(filePath)){
// 全选时显示所有图片被选中
holder.mCheck.setVisibility(View.VISIBLE);
holder.mImg.setColorFilter(Color.parseColor("#77000000"));
holder.mCheck.setBackgroundResource(R.drawable.image_choose);
}else {
// 置于编辑状态下才可以进行点击勾选
holder.mCheck.setVisibility(View.VISIBLE);
holder.mImg.setColorFilter(null);
holder.mCheck.setBackgroundResource(R.drawable.image_not_chose);
}
3.设置一个外界可以使用的全选代码。
public void selectAll(final List allImages){ //这里只能把mSelectedImg清空,不能清空mImgPaths,否则会有数组越界异常
this.mSelectedImg.clear();
this.mSelectedImg=allImages;
}
4.设置一个外界可以使用的反选代码。
public void inverse(){
for (int i=0;i
String mImagePath=mImgPaths.get(i);
if (this.mSelectedImg.contains(mImagePath)){
this.mSelectedImg.remove(mImagePath);
}else {
this.mSelectedImg.add(mImagePath);
}
}
}
至此,照片墙的全选和反选功能就实现了,要看懂这段代码,必须自己能做出照片墙。