커스텀 리스트뷰 (listview) 새로고침(갱신)

커스텀 리스트뷰를 새로고침,그러니까 갱신을 하려고 아래와 같은 방법을 사용했다


Adaptername.clear();

Adaptername.remove(datavo);

listviewname.clearChoices();

Adaptername.notifyDataSetChanged();

Adaptername.notifyDataSetInvalidated();

HelloActivity.this.onRestart();

HelloActivity.this.reset();

listviewname.setAdapter(Adaptername);


결과적으로 어떻게 해야 하냐면


다 안된다


어탭터를

cusorAdapter를 사용하고

notifyDataSetChanged() 대신 changeCursor()을 사용해야 한다

API11부터 사용할 수 있다고 한다


결론  : 오늘은 하루종일 삽질을 했다


커서어댑터를 사용하지 않고 해결하는 방법

1.커스텀 리스트 뷰의 아답터에 데이터리스트를 연결하는 부분을 메소드로 만든다

2.리스트 뷰를 갱신해줘야 하는 경우에 해당 메소드를 사용한다

..이렇게 단순하게 해결할 수 있다. 대체 몇시간을 삽질한건지

괜히 notifyDataSetChanged 라는게 있으니까 그걸 사용해보고 싶어서 그랬는데,

커스텀 뷰에는 안되니까 이 글을 보신 분은 위처럼 단순하게 해결하면 된다. 

(삭제 구현시에는 해당 리스트 아이템을 remove해주는 방법은 있다)

프로그래머는 단순하게 생각해야 한다는걸 다시 깨달았다.


*리플로 인해 좀 더 간단하게 정리

리스트를 첫 초기화 시키는 부분을 메소드로 만들어

데이터가 들어오면 초기화를 다시 시킴.


Posted by 안드로메다에서 온 프로그래머