- The content of the adapter has changed but ListView did not receive a notification
오랬동안 괴롭히던 에러였는데 해결법은 아래와같다.
ArrayList<NfcInfo> nfcList = new ArrayList<NfcInfo>();
ArrayList<NfcInfo> tempList = new ArrayList<NfcInfo>();
private class dbselectTask extends AsyncTask<Void, Void, Void> {
ProgressDialog loagindDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
loagindDialog = ProgressDialog.show(WriteListActivity.this, "",
"잠시만 기다려 주세요.", true);
}
@Override
protected Void doInBackground(Void... params) {
tempList.clear();
tempList.add(.......);
return null;
}
protected void onPostExecute(Void result) {
loagindDialog.dismiss();
nfcList.addAll(tempList);
GoodsAdapter ListView le_list = (ListView) findViewById(R.id.le_list);
mAdapter = new GoodsAdapter(WriteListActivity.this,
R.layout.listview_write, nfcList); //
le_list.setAdapter(mAdapter); // 리스트뷰를 Adapter에 연결한다
}
}
-> 리스뷰에 데이터가 변경되었을때 arrayList를 clear 해주는 타이밍이 문제였던것 같다.
-> 사용하고 있는 arrayList 와 똑같은 temp arrayList를 만들어준다
-> 바뀐 데이터는 temp arrayList 에 clear , add해준다.
-> 백그라운드 작업이 끝났을때 사용하고 있는 arrayList에 temp를 넣어준다
ex) nfcList.addAll(tempList)
성공하시길 빕니다!
'안드로이드' 카테고리의 다른 글
현재 위도 경도를 주소로 변환 (0) | 2015.01.06 |
---|---|
android nfc url read/write (0) | 2014.12.30 |
Seekbar 볼륨 조절 AlertDialog 이용 (0) | 2014.10.08 |
Android GCM JSP 연동 예제 (2) (1) | 2014.08.20 |
Android GCM JSP 연동 예제 (1) (0) | 2014.08.19 |