Mam wspólny problem:Android małpa powoduje wyjątek powiadomienia adapter w android.widget.HeaderViewListAdapter
java.lang.IllegalStateException: The content of the adapter has changed but List
View did not receive a notification. Make sure the content of your adapter is no
t modified from a background thread, but only from the UI thread. [in ListView(2
131427573, class android.widget.ListView) with Adapter(class android.widget.Head
erViewListAdapter)]
Ale adapter nie jest mój kod, ale w android.widget.HeaderViewListAdapter
ten korzysta Jellybean.
Przeczytałem kod źródłowy HeaderViewListAdapter
, ListAdapter
i ListView
. Numer IllegalStateException
jest wyświetlany, gdy liczba elementów w ListView
nie jest równa liczbie podanej przez ListAdapter
. W tym przypadku ListAdapter
to HeaderViewListAdapter
. Liczba HeaderViewListAdapter
to liczba oryginalnych ListAdapter
przekazywanych przez kod klienta, plus rozmiar nagłówka i stopki.
Przeszukałem mój kod. Cały dostęp do ListView
znajduje się w wątku UI i zawsze następuje do adaptera notifyDataSetChanged()
. Używam jednej stopki.
Nie występuje to przy normalnym użytkowaniu. Czy to ze względu na Monkey? Ale jak Monkey może modyfikować moje zmienne z innych wątków?
- Aktualizacja po więcej Monkey Testing
usunąłem stopkę usuwając wezwanie do addFooterView()
. Małpa nie uruchamia już wyjątku. Czy powinienem w pewnym momencie usunąć połączenie z addFooterView()
?
Proszę, proszę mi powiedzieć, że znalazłeś rozwiązanie! – StErMi
Mam ten sam problem, ale zdarza się to również poza używaniem małpy. Nie mogę odtworzyć problemu i wiele razy Monkey kończy bez błędu po iteracjach 20K. – StErMi
Niestety, nie znalazłem rozwiązania. Jednak nie widziałem tego problemu poza używaniem małp. – mparaz