커스텀 그리드뷰 구현시에 아이템에 체크된 개수 카운트가 되는데 겟뷰의 재활용으로 스크롤을 내렷다가 다시 올리면 아이템의
텍스트가 다시 역순으로 재배열됩니다. 그래서 여러 방법을 짜봣는데 로직을 짜려니 도무지 감이 안잡히네요.
체크체인지리스너 밖으로 settext를 꺼내야 할것 같은데 그러면 카운트를 못받아오고 고수님들의 조언 부탁드립니다 ㅠㅠ

class GalleryAdapter2 extends BaseAdapter {
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (items.get(0) instanceof BucketItem) {
ViewHolder holder;// show buckets
if (convertView == null) {
convertView = mInflater.inflate(R.layout.imageitem, null);
holder = new ViewHolder();
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
return convertView;
} else { // show images in a bucket
final ViewHolder holder2;
if (convertView == null) {
holder2 = new ViewHolder();
// if it's not recycled, initialize some attributes
convertView = mInflater.inflate(R.layout.allimageitem, null);
holder2.icon = (ImageView) convertView.findViewById(R.id.icon);
holder2.square = (CheckBox) convertView.findViewById(R.id.checkimage);
holder2.counttext = (TextView) convertView.findViewById(R.id.count_text);
convertView.setTag(holder2);
} else {
holder2 = (ViewHolder) convertView.getTag();
}
holder2.square.setTag(position);//Set Tag for CheckBox
holder2.square.setChecked(mSparseBooleanArray.get(position));
holder2.square.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mSparseBooleanArray.put((Integer) buttonView.getTag(), isChecked);
if (isChecked){
holder2.counttext.setVisibility(View.VISIBLE);
count++;
selectnumber.add(count);
} else {
mSparseBooleanArray.delete((Integer)buttonView.getTag());
holder2.counttext.setVisibility(View.GONE);
count--;
selectnumber.remove(count);
}
holder2.counttext.setTextKeepState(String.valueOf(selectnumber.indexOf(count)+1));
}
});
Glide.with(context).load(items.get(position).path)
.centerCrop()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(holder2.icon);
return convertView;
}
}
public boolean isChecked(int position) {
return mSparseBooleanArray.get(position, false);
}
public void setChecked(int position, boolean isChecked) {
mSparseBooleanArray.put(position, isChecked);
notifyDataSetChanged();
}
public void toggle(int position) {
setChecked(position, !isChecked(position));
}
private static class ViewHolder {
private ImageView icon;
private TextView text;
private CheckBox square;
private TextView counttext;
}
}