www.state-it.info

Gran base de respuestas a las preguntas de los desarrolladores
Header decor

Cómo reparar el error IllegalStateException en el ListView + ContentProvider + CursorAdapter + Loader?

sulik93 2015-06-13 12:33:40

Yo uso el ContentProvider + CursorAdapter + Loader.
En un hilo cargando los datos de la red, парсю y agrego en la base de datos a través de un ContentProvider:

context.getContentResolver().insert(uri, contentValues);

En total sale el Cursor en el método de onLoadFinish():
@Override
public void onLoadFinished(Loader loader, Cursor cursor) {
    cursorAdapter.swapCursor(cursor);
    cursorAdapter.notifyDataSetChanged();
}


Si a medida que se agregan item-s empezando a desplazarse por la lista sale el error:
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.madyar_android.app.PullToRefresh$4) with Adapter(class com.madyar_android.app.PullToRefresh$PullToRefreshAdapter)]
            at android.widget.ListView.layoutChildren(ListView.java:1548)
            at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:4320)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:776)
            at android.view.Choreographer.doCallbacks(Choreographer.java:579)
            at android.view.Choreographer.doFrame(Choreographer.java:547)
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:153)
            at android.app.ActivityThread.main(ActivityThread.java:5297)
            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:833)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at dalvik.system.NativeStart.main(Native Method)


Escriben, que se atreve a llamar a un método de cursorAdapter.notifyDataSetChanged();

Dime, por favor, donde puedo en este caso, llamar a notifyDataSetChanged (), o un problema en otro ?

Total answers: 2

mbelskiy 2015-06-13 19:06:35

dicen que el

Make sure the content of your adapter is not modified from a background thread, but only from the UI thread

Algo de usted con los flujos no los trastes, fuma.

sulik93 2015-07-07 23:04:37

tienes razón.


retor4i 2015-06-13 21:09:51

la Información en el adaptador fresco(cambiada), pero no se alertó acerca de este ListView. adapter.notifyDataSetchanged()

Preguntas relacionadas:

Footer decor

© www.state-it.info | Base of answers to questions for developers and programmers.