Pregunta

Hola cada vez que instalo la aplicación, abrozala que cerrarla con el botón Atrás y que nuevamente lo reabro recibo el mismo error:

05-05 10:49:35.453: ERROR/AndroidRuntime(5118): 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(2131361820, class android.widget.ListView) with Adapter(class com.TVSpored.ChannelItemAdapter)]

He leído que tengo que hacer que la función de Onrestart (ENLACE) ... pero no tengo idea de cómo manejarlo ...

Función OnCreate Haga las siguientes cosas:

  1. Establecer
  2. Establezca todos los objetos necesarios (ProgressDialog, ArrayList, ChannelItemAdapter, ChannelDBAdapter)
  3. Carga datos en AsyncTask: new LoadChannels().execute(channelItem);

Como he dicho antes, funciona perfectamente en el arranque y al navegar por la aplicación ... pero al salir de la aplicación y reiniciarla, siempre se aplasta ...

¡Gracias por tu ayuda!


Código agregado:

protected ArrayList<ToDoItem> doInBackground(ArrayList<ToDoItem>... passing) 
{

    cItems = passing[0]; //get passed arraylist
    toDoListCursor = channelDBAdapter. getAllToDoItemsCursor();
    startManagingCursor(toDoListCursor);
    channelItem.clear();
    if (toDoListCursor.moveToFirst())
    do 
    { 
      String task = toDoListCursor.getString(toDoListCursor.getColumnIndex(ToDoDBAdapter.KEY_NAME));
      String created = toDoListCursor.getString(toDoListCursor.getColumnIndex(ToDoDBAdapter.KEY_EPG_NAME));
      int fav = toDoListCursor.getInt(toDoListCursor.getColumnIndex(ToDoDBAdapter.KEY_FAV));
      int id = toDoListCursor.getInt(toDoListCursor.getColumnIndex(ToDoDBAdapter.KEY_EPG_ID));
      int ch_type = toDoListCursor.getInt(toDoListCursor.getColumnIndex(ToDoDBAdapter.KEY_CH_CHTYPE_ID));
      int country = toDoListCursor.getInt(toDoListCursor.getColumnIndex(ToDoDBAdapter.KEY_CH_COU_ID));
      ToDoItem newItem = new ToDoItem(task, created, fav, id, ch_type, country);
      channelItem.add(0, newItem);
    } 
    while(toDoListCursor.moveToNext());


    return cItems; //return result
}
¿Fue útil?

Solución

Desde la traza de la pila que ha proporcionado, parece que modifica el contenido de su adaptador ListView fuera del hilo de la interfaz de usuario. Creo que debería echar un vistazo a su AsyncTask para asegurarse de realizar modificaciones en su adaptador solo en los métodos que se ejecutan en el hilo de la interfaz de usuario (no en DoinBackground, por ejemplo).

Ver Asíncata

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top