@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int p = position; ← 포지션값이 필요해서 position을 사용하려니 상수로 만들어줘야 한다고 해서 어쩔 수 없이 썼습니다. 헌데 !!
if (convertView == null) {
convertView = getLayoutInflater().inflate(
R.layout.item_general, null);
}
/** 이미지 부분(음식사진) **/
ImageView ivFoodImage = (ImageView) convertView
.findViewById(R.id.iv_FoodImageG);
ivFoodImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
/** 체크박스 부분(음식이름) **/
CheckBox cbFoodName = (CheckBox) convertView
.findViewById(R.id.cb_FoodNameG);
cbFoodName.setText(arrFoodList.get(position).getFoodName());
cbFoodName.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
// Checked 일때
arrPosition.add(p);
} else {
// unChecked 일때
for (int i = 0; i < arrPosition.size(); i++)
if (arrPosition.get(i) == p) {
arrPosition.remove(i);
}
}
}
});
/** 텍스트뷰 부분(음식가격) **/
TextView tvFoodPrice = (TextView) convertView
.findViewById(R.id.tv_FoodPriceG);
tvFoodPrice.setText(arrFoodList.get(position).getFoodPrice());
return convertView;
}
----------------------------------------------------------------------------------------------------------------------------
상수를 써야 한다고 해서 어쩔 수 없이 썼는데, 그 때문에 포지션값이 계속 잘못나오지 않나 싶기도 하고,
다시 뷰를 그려주면서 엉뚱한 체크박스를 체크를 하는데, .... 어느 부분이 잘못되었는 지... 답답할 노릇입니다. ㅠ
리스트뷰에 체크박스 넣으면 원래 제멋대로 찍혀요.
윗분말처럼 setTag getTag로 하던지 해야돼요.
외부에 체크박스 체크 정보 저장하는 boolean형 배열하나 선언해주구요,
체크되면 getView 내에서 외부 배열로 저장해주고,
그전에 배열 순서대로 체크를 셋팅해주면됩니다.
1.외부배열 한개선언
getView(){
2. checkbox.setChecked(배열[position]);
3.chekbox.setOnCheck~(){
if(checkbox.isChecked(){배열[position] = true } else{배열[position] = false} //이부분에서 몇번째 리스트뷰 체크박스를 체크했는지 setTag, getTag로 가져오면되구요. 예제는 찾아보세요 많아요
}
}




getView 에서 이벤트를 적용 하시면 .... 그런 현상이 많이 나타나죠.... 첫번째껄 체크했는데 스크롤내려보면 밑에 화면에도 체크돼 있는 게 있기도 하고....setTag() 메소드를 사용하시고 태그값으로 값을 찾아서 체크 이벤트를 찾아주셔야 할것 같은데요...ㅎ