मैंने SO पर इस बारे में बहुत कुछ पढ़ा है लेकिन मैं अपने मामले में समाधान ढूंढने में सक्षम हूं। यहां सेटअप है:एडाप्टर की सामग्री बदल गई है लेकिन ListView को अधिसूचना प्राप्त नहीं हुई है, पृष्ठभूमि में अपडेट नहीं किया गया
गतिविधि ए, सूची और डेटा प्रदर्शित किया जा रहा है। मेरे डेटा प्रबंधक के async कार्य को अपडेट करने खत्म करते हैं, तो निम्न होता है:
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();
}
}
जब डेटा अद्यतन किया जाता है, गतिविधि एक एक कॉलबैक हो जाता है और करता है निम्नलिखित:
@Override
public void dataUpdated() {
mData = mDataManagerInstance.getData();
mDataSectionCount = mDataManagerInstance.getDataSectionRows();
mListAdapter.notifyDataSetChanged();
}
mData युक्त एक ArrayList है सब "पंक्तियां" और mDataSectionCount एक int [] है जिसमें एमडीएटी को खंडों में विभाजित किया जाना चाहिए, इस बारे में जानकारी शामिल है।
अब, गतिविधि ए में एक विकल्पमेनू है जो दूसरी गतिविधि खोल सकता है। गतिविधि बी
प्रत्येक अब और फिर जब बंदर और गतिविधि बी समाप्त होता है। गतिविधि एक के लिए मेरे onResume कहा जाता हो जाता है:
@Override
protected void onResume() {
super.onResume();
mDataManagerInstance = DataManager.getInstance();
mDataManagerInstance.setDataUpdatedListener(this);
mDataManagerInstance.updateData();
this.invalidateOptionsMenu();
}
(UpdateData सिर्फ दूर मेरी AsyncTask आग अगर इसके पहले से ही चल नहीं) और फिर गंदगी प्रशंसक हिट ...:
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)
कोई भी विचार? [: "एडाप्टर के सामग्री बदली है लेकिन ListView एक सूचना प्राप्त नहीं किया" एंड्रॉयड, ListView IllegalStateException] (http://stackoverflow.com
की संभावित डुप्लिकेट करना/प्रश्न/3132021/android-listview-illegalststateexception-the-content-of-the एडाप्टर-बदल गया है) – rds