onPostExecute()
ループ中のメソッド内でその例外に問題があります。以前は foreach ループを使用していましたが、使用する必要があることを読みましたListIterator
。うまくいけば、それは修正されませんでした。重要なコードの断片:
public void search(final String query) {
this.query = (!query.trim().isEmpty()) ? query : null;
loadItemsTask2 = new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
...
}
@Override
protected void onPostExecute(Void result) {
progress.setVisibility(View.GONE);
lView.setVisibility(View.VISIBLE);
adapter.clear();
for (ListIterator<LoyaltyProgramsListItem> iter = searchItems.listIterator(); iter.hasNext();) {
LoyaltyProgramsListItem si = iter.next();
adapter.add(si);
}
adapter.notifyDataSetChanged();
}
};
loadItemsTask2.execute();
}
次の行で例外がスローされます。
for (ListIterator<LoyaltyProgramsListItem> iter = searchItems.listIterator(); iter.hasNext();) {
ログキャット:
08-08 15:26:40.069 18277-18277/******* E/AndroidRuntime: FATAL EXCEPTION: main
java.util.ConcurrentModificationException
at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:64)
at pl.freebee.android.ui.fragments.LoyaltyProgramsListFragment$4.onPostExecute(LoyaltyProgramsListFragment.java:328)
at pl.freebee.android.ui.fragments.LoyaltyProgramsListFragment$4.onPostExecute(LoyaltyProgramsListFragment.java:289)
at android.os.AsyncTask.finish(AsyncTask.java:417)
at android.os.AsyncTask.access$300(AsyncTask.java:127)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)