안녕하세요.
어뎁터를 사용해서 리스트를 구성중에 오류가 있어서 질문드립니다.
리스트 중에 어떤 항목을 지우고 다시 리스트를 불러오는 과정에서 에러가 나네요.
데이터 삭제후
new ATask().execute(); 로 리스트 뷰 갱신
class MyWordListNotifyTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
pDialog = CustomProgressDialog.buildDialog(getActivity());
pDialog.show();
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
InitSetting();
return null;
}
@Override
protected void onPostExecute(Void result) {
if (null != pDialog && pDialog.isShowing()) {
pDialog.dismiss();
}
if (null == plist || plist.size() == 0) {
pDialog.dismiss();
} else {
if (adapter != null) {
///정상
adapter = new PersonAdapterOne(getActivity(), R.layout.main_list_event, plist);
listview_list.setAdapter(adapter);
///
//비정상
adapter.notifyDataSetChanged();
///
}
pDialog.dismiss();
}
super.onPostExecute(result);
}
}
class PersonAdapterOne extends ArrayAdapter<PersonOne> {
ArrayList<PersonOne> items;
LayoutInflater vi;
public PersonAdapterOne(Context context, int textViewResourceId, ArrayList<PersonOne> items) {
super(context, textViewResourceId, items);
// TODO Auto-generated constructor stub
Log.e("aaaaa","aaaaa");
this.items = items;
vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
// 문제는 items 에 오브젝트에 원래는 10개인데 null값이 2개가 더들어가서
08-08 18:59:19.168: E/AndroidRuntime(13831): FATAL EXCEPTION: main
08-08 18:59:19.168: E/AndroidRuntime(13831): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 0
08-08 18:59:19.168: E/AndroidRuntime(13831): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
08-08 18:59:19.168: E/AndroidRuntime(13831): at java.util.ArrayList.get(ArrayList.java:304)
위와 같은 오류가 납니다.
다른 곳에서는 문제가 없는데 저페이지만 그런거 같은데 도무지 이유를 모르겠네요.
notifyDataSetChanged 는 에러이고 setAdapter를 하면 에러가 안나고요..ㅠ
그리고notifyDataSetChanged 역시 AsyncTask를 사용하면 에러가나고요 AsyncTask 사용하지 않고 일반 함수로하면 에러가 나지 않습니다.
조언 부탁드립니다.^^