What's the difference between BaseAdapter and ArrayAdapter?
Here is the difference:
-
BaseAdapter
is a very generic adapter that allows you to do pretty much whatever you want. However, you have to do a bit more coding yourself to get it working. -
ArrayAdapter
is a more complete implementation that works well for data in arrays orArrayList
s. Similarly, there is a relatedCursorAdapter
that you should use if your data is in aCursor
. Both of these extendBaseAdapter
.
If your data is in a specialized collection of some sort or if you don't want the default behavior that ArrayAdapter
provides, you will likely want to extend BaseAdapter
to get the flexibility you need.
The performance of each really depends on how you implement them or change their behavior. At their core, either one can be just as effective (especially considering that an ArrayAdapter
is a BaseAdapter
).
You can do pretty much whatever you want with any adapter, but keep in mind that BaseAdapter
is abstract, so you can't use it directly.
BaseAdapter
is abstract while ArrayAdapter
extends BaseAdapter
(it is a concrete implementation of a BaseAdapter
). If you extends for ArrayAdapter
you are inheriting all the ArrayAdapter
's features and, override its implementation you can modify the ArrayAdapter
behavior. If you extends BaseAdapter
you must implements all the Abstract methods, that ArrayAdapter already implements.
Also, does it affects the performance of the ListView
no it does not.
And, the last question is, can i achieve anything doing with ListView using any of these Adapters, or, there are certain cases where specific adapter only can be used ?
If the implementation in the SDK fulfill your needs why you need to override it and re-invent the wheel?
The main difference between them is that BaseAdapter
can not be instantiate while ArrayAdapter
can