목록보기가 4 개이고 listview를 사용했습니다. 내부 이벤트를 수신 할 때 문자열을 동적으로 변경하려고합니다. 이벤트를 수신하면 문자열을 올바르게 설정하고 호출하는 것을 볼 수 있습니다.notifyDataSetChanged()가 목록보기를 업데이트하지 않습니다.
mAdapter.notifyDataSetInvalidated();
mAdapter.notifyDataSetChanged();
그러나 목록이 업데이트되지 않습니다.
목록보기가 4 개이고 listview를 사용했습니다. 내부 이벤트를 수신 할 때 문자열을 동적으로 변경하려고합니다. 이벤트를 수신하면 문자열을 올바르게 설정하고 호출하는 것을 볼 수 있습니다.notifyDataSetChanged()가 목록보기를 업데이트하지 않습니다.
mAdapter.notifyDataSetInvalidated();
mAdapter.notifyDataSetChanged();
그러나 목록이 업데이트되지 않습니다.
나는 동일한 경험을했습니다. 원인은 목록 어댑터가 UI 스레드가 아닌 잘못된 스레드에서 업데이트되고 있기 때문입니다. 이것은 쉽게 (필자는 다른 글에서 발견)를 통해 UI 스레드에서 어댑터 데이터를 변경하여 해결 :
이runOnUiThread(new Runnable() {
public void run() {
// code that changes the list adapter data
}
});
물론 당신은 항상 목록이 제공된다 Runnable를 구현하는 (내부) 클래스를 만들 수 있습니다 어댑터 및 데이터 추가, 삽입 등.
참고 : notifyDataSetInvalidated() 또는 notifyDataSetChanged() 호출은 setNotifyOnChange (false)를 사용하여 명시 적으로 해제하지 않는 한 기본적으로 호출되므로 필요하지 않습니다.
notifyDataSetChanged는 어댑터에서 추가 (또는 삽입), 제거 또는 지우기 기능을 사용하는 경우에만 작동한다고 생각합니다. 목록 어댑터를 강제로 재 작성하여 listView를 새로 고칠 수 있습니다.
실례의 나쁜 영국의
같은 소스 코드를 더 제공하십시오. – Reno