Я немного поразмыслил над созданным исключением при использовании BaseAdapter, но я не могу найти альтернативное решение: Убедитесь, что содержимое вашего адаптера не изменен из фоновой темыAndroid: изменение содержимого адаптера из фонового потока
Что я хочу достичь, так это сохранить копию очереди сообщений в памяти и использовать эту очередь сообщений для заполнения BaseAdapter для моего ListView. Причина этого заключается в том, что очередь сообщений будет продолжать получать сообщения из сокета, даже если ListView не присутствует в данный момент (например, окно чата).
Проблема возникает, когда у меня есть активность с ListView на переднем плане, BaseAdapter привязана к какому-данных очереди сообщений, и сообщение приходит в розетку. Добавление нового сообщения в очередь вызовет исключение, упомянутое выше. Если я предварительно не заполняю свой BaseAdapter с очередью сообщений (как в базовом адаптере, имеющем собственную очередь сообщений) и обновляя оба из них при поступлении нового сообщения, я не могу найти пути решения этой проблемы.
Я действительно не хочу удвоить усилия по поддержанию этих двух очередей таким образом, конечно, есть лучший способ сделать это? Отправка широковещательных сообщений не работает ни из-за потенциальной задержки в адаптере, обслуживающей прокрутку, а в вызове notifyDataSetChanged.
Какой адаптер вы действительно используете? Вы понимаете, что BaseAdapter является абстрактным? Кроме того, какое исключение вы получаете? Вы не говорите об этом. – codinguser
Привет, на данный момент я просто создаю свой собственный класс, расширив BaseAdapter, внедряя методы getCount(), getItem(), getItemId() и getView(); Исключением является указанное выше: «Убедитесь, что содержимое вашего адаптера не изменено из фонового потока». Вызывается попыткой обновления набора данных адаптера из потока non-ui (в этом случае мой класс контроллера, который содержит очередь сообщений). Я пытаюсь найти способ обновить мою очередь сообщений, а также активность (если она находится на переднем плане). – Bundeeteddee