이미지뷰와 체크박스가 들어있는 아이템 뷰를 만들고 grid layout와 ArrayList를 사용하여 정렬하였습니다.
아이템뷰를 long press할때 체크박스가 보였다 안보였다하기위해서 getView에 onItemLongClick이벤트를 넣어 아래와같이 코드를 작성하였습니다.
아이템뷰를 long press하여 invisible, visible하는 것을 체크해봤더니
맨 처음에 안보였다 보여지는 long press event는 먹히는데 그 이후에 long press event를 진행하면 다른 모든 체크박스는 나타났다 사라졌다를 반복하는데, grid layout 제일 처음에 있는 아이템 뷰(position=0)의 체크박스만 사라지지 않습니다.
set visible, invisible하는 부분을 찍어봐도 mArrData.get(0)의 체크박스 내용이 다른 체크박스와 함께 보였다 안보였다를 반복해서 바뀌고있는데 레이아웃상엔 먹히지 않으니 답답해 미치겠습니다.
혹시 왜 이런지 아는 고수분 계시면 이유나 해결방안 좀 부탁드립니다ㅠㅠㅠ
private class ImageAdapter extends BaseAdapter {
private Context mContext;
private int mCellLayout;
private LayoutInflater mLiInflater;
private ArrayList<MarkerItem> AData; //grid array list data
.
.
public View getView(final int position, View convertView,ViewGroup parent) {
if (convertView == null) {
convertView = mLiInflater.inflate(mCellLayout, parent, false);
convertView.setLayoutParams( new GridView.LayoutParams( width, width ) );
ImageViewHolder holder = new ImageViewHolder();
holder.veiwImage = (ImageView) convertView.findViewById(R.id.item_image);
holder.checkImage = (CheckBox) convertView.findViewById(R.id.item_check);
.
.
mGvImageList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
if (show_ck) {
for (int i = 0; i < getCount(); i++) {
mAData.get(i).checkbox.setVisibility(View.INVISIBLE);
}
} else {
for (int i = 0; i < getCount(); i++) {
mAData.get(i).checkbox.setVisibility(View.VISIBLE);
}
}
mListAdapter.notifyDataSetChanged();
return false;
}
});