Android ArrayAdapter

android arrayadapter

ArrayAdapter is concrete class that derives from the BaseAdapter and is backed by an array of arbitrary objects.

ArrayAdapter requires us to pass a single TextView as a resource as the layout. This is for simple layouts where you don't have to create a custom adapter.

For complex layouts you can create your own adapter that derives from this class.

ArrayAdapter can take as the data source as Lists, String Arrays or Arrays of custom objects.

If you use an Array of custom objects then be sure to override the toString() method so as to customize the string that will get displayed in the adapterview.

ArrayAdapter Definition

ArrayAdapter resides in the android.widget package:

package android.widget;

It derives from BaseAdapter:

public class ArrayAdapter extends BaseAdapter..{}

And implements Filterable and ThemedSpinnerAdapter interfaces:

public class ArrayAdapter extends BaseAdapter implements Filterable ThemedSpinnerAdapter{}

Creating ArrayAdapter Instance

ArrayAdapter provides several constructors for its creation. All these constructors must take at least a Context object and resource integer.

No. Constructor
1. ArrayAdapter(Context context, int resource)
2. ArrayAdapter(Context context, int resource, int textViewResourceId)
3. ArrayAdapter(Context context, int resource, T[] objects)
4. ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
5. ArrayAdapter(Context context, int resource, List<T> objects)
6. ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)

Creating ArrayAdapter From Resource

Not only can arrayadapter be creating using constructors but it can also be created from an external resource.

Android provides a createfromresource() method which is static. This method returns us an ArrayAdapter instance.

Binding Lists and Arrays into an ArrayAdapter

You can bind a list of objects or an array into an ArrayAdapter via the constructor. For array:

ArrayAdapter(Context context, int resource, T[] objects)

For List:

ArrayAdapter(Context context, int resource, List<T> objects)

EXAMPLE:

ArrayAdapter myArrayAdapter = new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,galaxiesList)

Adding Individual Elements into an ArrayAdapter

Or you can add items individually to an already existing ArrayAdapter or a collection of elements into an existing ArrayAdapter.

To add an object:

myArrayAdapter.add(T object)

This will add the specified object to the end of our arrayadapter.

To add a collection:

myArrayAdapter.addAll(Collection<? extends T> collection)

This will add a Collection to the end of our adapter.

Or add a list that is not necessarily a collection, like say an array:

myArrayAdapter.addAll(T... items)

where T is an Object.

Clearing the ArrayAdapter

This will remove everything from the adapter:

myArrayAdapter.clear()

Getting the total number of items in the ArrayAdapter

We can get the count of items in the arrayadapter using the getCount() method:

int total = myArrayAdapter.getCount();

Getting a particular item from an ArrayAdapter

You can obtain item from an ArrayAdapter:

Object myItem = myArrayAdapter.getItem(position);

You pass the position, an integer.

Getting the Position of a Known Object

Sometimes you don't know the position of an object, but you know the object. So you can get the position by passing the item to the getPosition() method.

int itemPosition = myArrayAdapter.getPosition(item);

Other Adapter Types

Let's look at some of the available adapter subclasses.

SpinnerAdapter is an interface that binds android.widget.Spinner to its data.

This interface lives inside the android.widget package:

package android.widget;

Like the ListAdapter, this interface derives majority of its methods from the android.widget.Adapter interface.

public interface SpinnerAdapter extends Adapter {}

Spinners in android show data in dropdowns. They are the equivalence of ComboBox in say Swing or WinForms.

However,because of the SpinnerAdapter, spinners are very customizable.

This is because spinner adapter allows for definition of two different views:

  1. One showing the data in the spinner itself.

  2. One showing the data in a dropdown list when the spinner is pressed.

ListAdapter is an interface that's used to bind a ListView to its data.

This inteface resides inside the android.widget package:

package android.widget;

It derives from android.widget.Adapter, an interface that contains several signatures to be implemented by it's implementers.

public interface ListAdapter extends Adapter {}

Majority of the times that data needs to come from a Cursor object, however it's not mandatory. ListView can display any data as long as it's contained in a ListAdapter.

BaseAdapter as the name suggests BaseAdapter is a base adapter, or super adapter. An adapter is a class that acts as a bridge between an adapterview and the underlying data source.

By being a base adapter BaseAdapter provides a common implementation for adapters that can be used in:

  1. ListView,GridView - By use of listAdapter.
  2. Spinner - By use of spinnerAdapter.

Best Regards.

How do You Feel after reading this?

According to scientists, we humans have 8 primary innate emotions: joy, acceptance, fear, surprise, sadness, disgust, anger, and anticipation. Feel free to tell us how you feel about this article using these emotes or via the comment section. This feedback helps us gauge our progress.

Help me Grow.

I set myself some growth ambitions I desire to achieve by this year's end regarding this website and my youtube channel. Am halfway. Help me reach them by:




Recommendations


What do You Think

Dear readers drop us your comments below. We are building a community of students and learners. Start by dropping us your suggestions below. What tutorials do you want us to do for example? Where can we improve? What are some awesome resources out there? Do you have any code you want to share with us?
By the way that example or snippet you have lying in your computer can really help beginner programmers. We can share it here with other students.

Previous Post Next Post