ListView does everything on the UI thrad.

> I am pretty sure the adapter in this app is not being modified outside of
> the UI thread but I can cause the exception to be thrown.

Modifying the data structure(s) that backs the adapter on a background
thread could cause this.

>
> Thanks,
>
> On Thu, Nov 19, 2009 at 2:24 PM, Dianne Hackborn <hack...@android.com>
> wrote:
>>
>> As the exception says:
>>
>>                 throw new 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(" + getId() +
>> ", " + getClass()
>>                         + ") with Adapter(" + mAdapter.getClass() + ")]");
>>
>> You can't modify an adapter from a background thread; this must be done on
>> the main thread.
>>
>> This exception is not adding a restriction; it is making it more obvious
>> when you do something that would always break in weird, subtle, and/or
>> horrible ways.
>>
>> On Thu, Nov 19, 2009 at 5:56 AM, WoodManEXP <woodman...@gmail.com> wrote:
>>>
>>> For Google about BaseAdapter class
>>>
>>> In Android 1.6 and 2.0 the BaseAdapter class has apparently been
>>> modified to throw an exception when it sees the Adapter.getCount()
>>> method return a number different than what it picked up when
>>> BaseAdapter.notifyDataSetChanged() was called (at least I did not
>>> observe this behavior in pre 1.6).
>>>
>>> So now the question is, when should one call notifyDataSetChanged() or
>>> more importantly, when can the count in the Adapter be safely changed?
>>>
>>> Consider the case of an app with a background thread delivering data
>>> to a BaseAdapter at a rate faster than the ListView responds to
>>> notifyDataSetChanged(). Because notifyDataSetChanged() is a
>>> synchronous call and the ListView updates are taking place sometime in
>>> the indeterminate future on the UI thread, how can an app know when it
>>> is safe to change the adapter count?
>>>
>>> If the app changes the count while the ListView is updating itself the
>>> exception will be thrown (and there is no way to catch the exception).
>>>
>>> Is there a way to know when it is safe to change the count in the
>>> BaseAdapter?
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Android Developers" group.
>>> To post to this group, send email to android-developers@googlegroups.com
>>> To unsubscribe from this group, send email to
>>> android-developers+unsubscr...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/android-developers?hl=en
>>
>>
>>
>> --
>> Dianne Hackborn
>> Android framework engineer
>> hack...@android.com
>>
>> Note: please don't send private questions to me, as I don't have time to
>> provide private support, and so won't reply to such e-mails.  All such
>> questions should be posted on public forums, where I and others can see and
>> answer them.
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Android Developers" group.
>> To post to this group, send email to android-developers@googlegroups.com
>> To unsubscribe from this group, send email to
>> android-developers+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/android-developers?hl=en
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en



-- 
Romain Guy
Android framework engineer
romain...@android.com

Note: please don't send private questions to me, as I don't have time
to provide private support.  All such questions should be posted on
public forums, where I and others can see and answer them

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to