Ho letto molto su questo su SO ma non sono riuscito a trovare una soluzione nel mio caso. Ecco la configurazione:Il contenuto dell'adattatore è cambiato ma ListView non ha ricevuto una notifica, nulla aggiornato in background
L'attività A contiene l'elenco ei dati visualizzati. Quando compito asincrona del mio manager dei dati termina l'aggiornamento, accade quanto segue:
protected void onPostExecute(Void v) {
super.onPostExecute(v);
if (editedDataSectionRows == null)
editedDataSectionRows = new int[] {0, 0, 0, 0, 0, 0, 0};
mData= editedData;
mSectionRows = editedDataSectionRows;
if (mCallback != null) {
mCallback.dataUpdated();
}
}
quando i dati vengono aggiornati, l'attività A ottiene un callback e fa quanto segue:
@Override
public void dataUpdated() {
mData = mDataManagerInstance.getData();
mDataSectionCount = mDataManagerInstance.getDataSectionRows();
mListAdapter.notifyDataSetChanged();
}
mData è un ArrayList contenente tutte le "rows" e mDataSectionCount è un int [] contenente informazioni su come mData deve essere suddiviso in sezioni.
Ora, l'attività A ha un menu opzioni che può aprire una seconda attività. Attività B.
Ogni tanto quando si esegue Scimmia e Attività B termina. Il mio onResume per attività A viene chiamato:
@Override
protected void onResume() {
super.onResume();
mDataManagerInstance = DataManager.getInstance();
mDataManagerInstance.setDataUpdatedListener(this);
mDataManagerInstance.updateData();
this.invalidateOptionsMenu();
}
(UpdateData solo spara via il mio AsyncTask se non è già in esecuzione) e poi la merda colpisce il ventilatore ...:
FATAL EXCEPTION: main
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(-1, class com.applidium.headerlistview.HeaderListView$InternalListView) with Adapter(class se.*.android.activities.ListActivity$1)]
at android.widget.ListView.layoutChildren(ListView.java:1582)
at android.widget.ListView.commonKey(ListView.java:2104)
at android.widget.ListView.onKeyDown(ListView.java:2085)
at android.view.KeyEvent.dispatch(KeyEvent.java:2620)
at android.view.View.dispatchKeyEvent(View.java:7149)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1458)
at android.widget.ListView.dispatchKeyEvent(ListView.java:2070)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1462)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1462)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1462)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1462)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1462)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1462)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1898)
at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1375)
at android.app.Activity.dispatchKeyEvent(Activity.java:2356)
at com.actionbarsherlock.app.SherlockFragmentActivity.dispatchKeyEvent(SherlockFragmentActivity.java:122)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1825)
at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3585)
at android.view.ViewRootImpl.handleImeFinishedEvent(ViewRootImpl.java:3555)
at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:2805)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:4787)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
at dalvik.system.NativeStart.main(Native Method)
Tutte le idee?
Eventuali duplicati di [Android, ListView IllegalStateException: "Il contenuto della scheda è cambiato, ma non ha ListView ricevere una notifica"] (http://stackoverflow.com/questions/3132021/android-listview-illegalstateexception-the-content-of-the-adapter-has-changed) – rds