Difference between ListView invalidate() vs invalidateViews()?

5.1k Views Asked by At

What is the difference between ListView.invalidate() and ListView.invalidateViews()?

For me, invalidate() alone did not work. Whereas invalidateViews() worked just the way I wanted i.e. to redraw the List items.

1

There are 1 best solutions below

0
On

According to Android webpage View Invalidate , ListView.invalidate() will

Invalidate the whole view. If the view is visible, onDraw(android.graphics.Canvas) will be called

This redraws the Canvas background through onDraw event. This is useful when the looks/feel have changed.

ListView.invalidateViews(), stated on the Android AbsListView invalidateViews,

Causes all the views to be rebuilt and redrawn.

I think this means it will "rebuild" the modified data associated with the ListView, and update the looks/feel. However, this updates child views as well, and it is time consuming. Normally I use notifyDataSetChanged() of BaseAdapter when data has changed.

In conclusion, use the method that is appropriate for your needs.