2014-04-24 4 views
0

정말 필사적입니다. 제발 도와주세요.Android listview 새로 고침 만 한 번

내 주요 활동 목록보기에서 모든 항목을 제거한 다음 다른 데이터를 추가하고 싶습니다. 데이터를 삭제하고 목록보기를 새로 고칠 수 있지만 새 데이터를 추가 할 때 이상한 일이 발생합니다. 내 배열에 데이터를 삽입합니다. 삽입 할 때마다 어댑터에서 notifydatasetchanged를 호출합니다. 어댑터는 이러한 항목을 가져옵니다 (디버그 모드에서이 항목을 확인했습니다). 그러나 목록보기가 새로 고쳐지지 않습니다. 그리고 지금은 매우 어려운 일이 있습니다 : 장치에서 뒤로 버튼을 누르면 응용 프로그램이 종료됩니다 (이 부분은 정상입니다). 그러나 잠시 후 끝내기 전에 올바른 데이터로 목록보기를 새로 고칩니다. 여기

내 코드의 일부입니다 : 를 내가 사용하는 데이터를 삭제하는 경우 :

newsArrayList = new ArrayList<NewsClass>(); 
Adapter = new NewsAdapter(this, newsArrayList); 
lv.setAdapter(Adapter); 

"LV는"내 목록보기입니다. 목록보기가 올바르게 모든 항목을 잃고 새로 고칩니다. 나는 또한 이것을 시도했다 :

newsArrayList.clear(); 
Adapter.notifyDataSetChanged(); 

또한 예상대로 일했다. 그리고 나는 다음과 같은 라인을 가지고 내 배열에 새 항목을 추가 할 "은"루프를 사용

newsArrayList.add(news[i]); 
Adapter.notifyDataSetChanged(); 

내가 쓴대로 디버그 모드에서 실행할 때, 모든 것이 잘 보인다. 나는이 문제에 종일 종사하고있다. Stackoverflow에서 비슷한 문제에 대한 여러 게시물을 읽었습니다. 심지어는 video을 YouTube에서 보았습니다. 기본 UI 스레드에서 모든 것을 호출합니다. 내 활동을 다시 시작하여이 문제를 해결할 수는 있지만 그 이상으로하고 싶습니다. 나는 무효화 등을 시도했지만 아무런 도움이되지 않았습니다. 매우 딱딱한 일에주의하십시오. 나는 썼습니다 ... 저는 액티비티가 그 뷰 또는 그와 비슷한 것을 다시 그리도록 강요해야한다고 생각합니다. 그러나 심지어 refreshDrawableState(); 내 listview에 도움이되지 않았다.

미리 감사드립니다. 당신이 다음 목록 데이터를 삭제하려면

+0

알림을 보내지 마십시오. 모든 변경 작업을 수행하고 지우기, 추가 및 알림을 수행 할 때까지 데이터 집합에서 변경됩니다. 그렇게하지 않으면 매우 비효율적이며 메모리/핸들 문제가 발생할 수 있습니다. – Gusman

답변

0

기본적으로 단지

newsArrayList.clear(); 
lv.setAdapter(null); 

가 다시 추가 전화 무엇도의 ArrayList에서 데이터 및 설정 어댑터

newsArrayList = new ArrayList<NewsClass>(); 
Adapter = new NewsAdapter(this, newsArrayList); // considering list with some elements 
lv.setAdapter(Adapter); 

당신이 에 OutOfMemory 에러/예외를 받고있는 경우 어댑터 클래스에 문제가 있습니다 getView 메서드