For an ArrayAdapter
, notifyDataSetChanged
only works if you use the add()
, insert()
, remove()
, and clear()
on the Adapter.
When an ArrayAdapter
is constructed, it holds the reference for the List
that was passed in. If you were to pass in a List
that was a member of an Activity, and change that Activity member later, the ArrayAdapter
is still holding a reference to the original List
. The Adapter does not know you changed the List
in the Activity.
Your choices are:
- Use the functions of the
ArrayAdapter
to modify the underlying List (add()
,insert()
,remove()
,clear()
, etc.) - Re-create the
ArrayAdapter
with the newList
data. (Uses a lot of resources and garbage collection.) - Create your own class derived from
BaseAdapter
andListAdapter
that allows changing of the underlyingList
data structure. - Use the
notifyDataSetChanged()
every time the list is updated. To call it on the UI-Thread, use therunOnUiThread()
ofActivity
. Then,notifyDataSetChanged()
will work.
Very concise answer. I like this.
Thank you.
you are damn good, i’ve problem with notifydatachanged() coz i was not using add() now it’s working,
thank you so much
I see you don’t monetize jackiexie.com, don’t waste your traffic, you can earn extra cash
every month with new monetization method. This is the best
adsense alternative for any type of website
(they approve all sites), for more details simply search in gooogle:
murgrabia’s tools