리스트뷰가 하나 있습니다.
리스트뷰 내부에 들어가는 한 행은 텍스트뷰 2개하고 오른쪽 끝에 체크박스가 있는데요.
평소에는 체크박스가 보이지 않다가, 메뉴에서 삭제 버튼을 눌렀을 때 체크박스가 보이게 하고 싶은데,
제가 생각한것은 리스트뷰하고 연결된 adapter 확장한 클래스에서 체크박스 리소스 id를 받아와서 visibility를 바꿔주는 메소드를 정의하고
리스트뷰가 존재하는 액티비티에서는 삭제 버튼이 눌렸을시 adapter의 위의 메소드를 수행하고
notifyDatasetChanged 메소드를 수행하면 리스트뷰의 체크박스가 보이게 바뀔거라고 생각했는데..
생각처럼 되지가 않네요 ㅠㅠ
어떤 방법이 좋을까요?
우선 체크 박스의 visibility 를 none 으로 설정한 상태에서 리스트를 생성합니다.
그리고 리스트 뷰에 들어가는 Adapter 에 체크 뷰의 상태(보임, 안보임) 을 설정하는 함수를 추가합니다.
예를 들면 다음과 같습니다.
public class adapter extends ArrayAdapter<T>{
private boolean mCheckBoxState = false;
public void setCheckBoxState(boolean pState){
mCheckBoxState = pState;
notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
View v = convertView;
if(v == null){
LayoutInflater vi = (LayoutInflater)***.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.listViewItem, null);
}
CheckBox checkBox = (CheckBox)v.findViewById(R.id.checkBoxName);
if( mCheckBoxState ) checkBox.setVisibiliity(View.VISIBLE);
else checkBox.setVisibiliity(View.INVISIBLE);
return v;
}
}
체크박스 상태를 수정하고 데이터가 변경되었다고 알려주면 바로 반영됩니다.




보통 말씀하신것같은 방법을 사용하는데요
제가 예전에 작업할때 플리킹 기능을 통해서(아이폰에서 리스트뷰 한 row를 옆으로 플리킹 했을때 삭제버튼 생성) 이벤트를 구현을 했었습니다.
소스가 있으면 공유를 해드릴텐데-_-
날라가는 바람에-0-;;
해당 방법으로 하시면 될거같습니다