Он сообщает вам класс, в котором произошла ошибка: ch.uzh.csg.games4blue.gamebase.view.UserView
содержит класс с именем UserAdapter
внутри него.
Позвольте мне попытаться объяснить, что здесь происходит. Когда вы создаете ListView
с резервным копированием Adapter
, ListView
получает данные, запрашивая у адаптера. Каждый раз, когда вы прокручиваете, ListView запрашивает у адаптера новые элементы, в которые вы прокручивали.
Обычно вы создаете ListView, вы создаете адаптер, вы устанавливаете адаптер на просмотр списка, и все готово. Android OS позаботится обо всем остальном. Однако то, что вы пытаетесь сделать, немного сложнее. Вы пытаетесь периодически обновлять данные в адаптере. Вы можете себе представить, что представление списка нужно будет информировать, если данные адаптера изменились, верно? Если вы отображаете список из 2 элементов и неожиданно добавляете в адаптер еще 2 элемента, то в списке теперь должны отображаться 4 элемента! Тем не менее, было бы действительно неэффективно, если бы просмотр списка должен был постоянно проверять, изменился ли адаптер, верно? Таким образом, должно произойти, что просмотр списка будет предполагать, что адаптер не изменяется, и адаптер уведомит просмотр списка, если он действительно изменится. (Это соглашение между списком просмотра и адаптером дает другие преимущества, например, просмотр списка может кэшировать некоторые элементы, извлеченные из адаптера для быстрого доступа. Ака, если на экране отображается 10 элементов списка, список, возможно, уже запрошен 14 пунктов. Таким образом, если вы прокрутите вверх или вниз, по крайней мере для 2 пунктов в любом направлении у ListView уже есть данные для отображения!)
Однако вам не удалось уведомить просмотр списка об изменении данных внутри адаптера. Где-то внутри UserAdapter или UserView данные изменяются! Чтобы упростить это для всех, возможно, вы могли бы опубликовать полный класс UserView? Я держу пари, что у вас есть некоторый объект данных, такой как ArrayList, в качестве закрытой переменной внутри класса UserView. Внутри класса UserAdapter вы предоставляете эти данные в ListView. Однако где-то внутри класса UserView вы изменяете этот набор данных, после вы уже предоставили его в ListView.
Отказ от ответственности: я в основном копирую здесь другие ответы, но я думаю, что могу предоставить более четкое представление о том, что происходит, если я объединю 2-3 ответа, данных
Отказ от ответственности 2: Я устал, и это, кажется, плохо написано. Делать это вики в надежде, что кто-то вылечит мой поздний ночной беспорядок. Если это совершенно непонятно, просто скажите это, и я удалю его