List View - UI thread 에러

2011.04.21 09:06 from Android

(custom) ListView를 사용할 때



ArrayList<x> list;
Adapter ad;

list.add(xx);


처럼 동적으로 추가하면

ERROR/AndroidRuntime(28265): java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131034121, class android.widget.ListView) with Adapter(class Leo.myCoupon.CouponAdapter)]

이런 에러가 났다..


몇시간동안 찾고

UI thread에서 돌아가게 할려고 handler도 써보고 RunOnUiThread도 해보고 했는데도

똑같은 계속에러가;

그러다 디버거를 돌려보니까 Thread1에서 돌았다. 결국, 다 UI Thread에서 돌고있었던거다;

UI Thread문제가 아니었다.


ArrayList<x> list;
Adapter ad;

ad.add(xx);


이런식으로 추가 했어야한다.... 너무 초보적인 실수라;

아니면

list.add(xx);  후에
ad.notifyDataSetChanged(); 로 알려줘도된다.

아마 list에 직접 추가되는것은 UI에 적용이 안됬던것이라 에러가 났었나보다

adapter를 통해 추가 시켜주면

자동으로 list에 추가도 해주고 UI도 업데이트 시켜주는듯 하다.
신고
Posted by Leo 리오 트랙백 2 : 댓글 4

티스토리 툴바