삭제할 음악 파일을 listvew에 CheckBox를 넣어 체크된 항목들을 삭제하도록 하려고 하였다.
CheckBox가 true가 될때 Map 담아 후에 삭제 항목을 클릭시 삭제되도록 한다.
뷰 재 사용으로 인해 체크 하지 않았던 항목도 체크 된 것 처럼 나타났다.
Map의 값을 읽어 CheckBox를 초기화 시켰다.
holder.cbId.setOnCheckedChangeListener(new OnCheckedChangeListener() {
Map에 데이터를 넣을 때 위 OnCheckedChangeListener 을 사용하려고 하였으나
최초 Map에서 데이터를 읽어와 CheckBox를 초기화할때도 해당 Listener가 연결되어 문제가 되었다.
그래서 아래와 같이 OnClickListener를 사용하여 Map에 데이터를 채워 넣었다.
String checked = mCheckBoxHasMap.get(id);
LOG.i(CLASSNAME, "checked is "+checked);
if(checked!=null) {
LOG.i(CLASSNAME, "checked is not null");
holder.cbId.setChecked(Boolean.parseBoolean(checked));
} else {
LOG.i(CLASSNAME, "checked is null");
holder.cbId.setChecked(false);
}
holder.cbId.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
CheckBox cb = (CheckBox)v;
if(cb.isChecked()==true){
LOG.i(CLASSNAME, "mCheckBoxHasMap.put( id : "+id+",true)");
mCheckBoxHasMap.put(id, "true");
} else {
mCheckBoxHasMap.remove(id);
}
}
});
위와 같이 초기화 하고 onClickListener에서 Map에 체크된 데이터를 넣으면 문제가 없이 동작했다.
'PROGRAMING > Android' 카테고리의 다른 글
Media File 삭제 , 단일 File MediaScanning 하기 (0) | 2013.02.24 |
---|---|
Fragment에서 하단 OptionMenu 사용하는 방법 (0) | 2013.02.24 |
listView 항목에 Audio Albumart(thumbnail)을 지연 없이 나타내기 LinkedHashMap과 SoftReference사용 [캐시 처리] (1) | 2013.02.24 |
listView 항목에 Audio Albumart(thumbnail)을 지연 없이 나타내기 AsyncTask 호출 늦게 하기 (0) | 2013.02.23 |
listView 항목에 Audio Albumart(thumbnail)을 지연 없이 나타내기.AsyncTask (1) | 2013.02.22 |