Question

Salut chaque fois que j'installe l'application, l'ouvrez que la fermer avec le bouton arrière et que je le rouvre à nouveau, j'obtiens la même erreur:

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)]

J'ai lu que je dois faire une fonction OnRestart (LIEN) ... mais je ne sais pas comment le gérer ...

Fonction sur place faites les choses suivantes:

  1. mise en page
  2. Définissez tous les objets nécessaires (ProgressDialog, ArrayList, ChannelItemAdapter, ChannelDbadapter)
  3. Charge les données dans AsyncTask: new LoadChannels().execute(channelItem);

Comme je l'ai déjà dit, cela fonctionne parfaitement sur le plan et lors de la navigation sur l'application ... mais lorsque vous quittez l'application et le redémarrez, il écrase toujours ...

Merci pour ton aide!


Code ajouté:

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
}
Était-ce utile?

La solution

À partir de la trace de pile que vous avez fournie, il semble que vous modifiiez le contenu de votre adaptateur ListView en dehors du fil d'interface utilisateur. Je pense que vous devriez jeter un œil à votre asynctasque pour vous assurer que vous effectuez des modifications sur votre adaptateur uniquement sur les méthodes qui sont exécutées dans le fil d'interface utilisateur (pas dans Doinbackground par exemple).

Voir Asynctasque

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top