I used to the ListView
add the footer view and also remove footer its worked fine in android version 4.4 above
but problem in android version 4.3 and below
I a
This is probably caused by calling setAdapter()
on the ListView before calling setFooterView()
. This was necessary in all versions of Android prior to 4.4
Actually, I didn't know this restriction had been relaxed for KitKat until I saw this question... :)
In the sources of addFooterView()
for API level 15:
/*
* NOTE: Call this before calling setAdapter. This is so ListView can wrap
* the supplied cursor with one that will also account for header and footer
* views.
Meanwhile, it KitKat, this restriction was relaxed:
/*
* Note: When first introduced, this method could only be called before
* setting the adapter with {@link #setAdapter(ListAdapter)}. Starting with
* {@link android.os.Build.VERSION_CODES#KITKAT}, this method may be
* called at any time.
If you want to be compatible with pre-4.4, you need to respect the calling order, i.e.
addFooterView(footer);
setAdapter(adapter);
removeFooterView(footer);
Yes. Headers/footers are indeed problematically with backward compatibility. I recently refactored code, to use relative layout instead of a footer, which did pretty much, what I expected on any device -> footer visible, footer gone. Try this with a ListView footer, this will not work, instead you need to call addFooterView, removeFooterView and even this is not working as mentioned. The crash could be circumvented by
a = getAdapter()
setAdapter(null)
removeFooter()
setAdapter(a)
but the footer still was not working that way.