notifyDataSetChanged example

android, android-arrayadapter, notifydatasetchanged

Solution

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 new `List` data. (Uses a lot of resources and garbage collection.)

- Create your own class derived from `BaseAdapter` and `ListAdapter` that allows changing of the underlying `List` data structure.

- Use the `notifyDataSetChanged()` every time the list is updated. To call it on the UI-Thread, use the `runOnUiThread()` of `Activity`. Then, `notifyDataSetChanged()` will work.

Problem

I'm trying to use in my `Android Application` the `notifyDataSetChanged()` method for an `ArrayAdapter` but it doesn't work for me. I found as answer here, that `notifyDataSetChanged()` should run in the main thread, but there was no example for that. Could anybody send an example or at least a link?!

Original source

Related problems