Android Adapter


Adapter is an interface defined in the android.widget package that acts as a bridge between the AdapterView and the underlying data for that view.

An adapter has two responsibilities:

  1. Provide access to data items.
  2. Make View objects for each item in the data set.

Here are the main implementors of the the Adapter interface:

  1. BaseAdapter.
  2. ArrayAdapter.
  3. SimpleCursorAdapter.
  4. CursorAdapter.
  5. SimpleAdapter etc.

Commonly used Adapter Methods

This interface has some method signatures that will typically be implemented by concrete classes implementing this interface. Some of them include:

(a). int getCount()

This method returns the total number of items in the data set that this adapter represents.

(b). Object getItem(int position) :

This method will retrieve the data item that's associated with the specified position in the data set.

As a parameter it takes the position of the item whose data we want within the adapter's data set. It will return the an Object which is the data at the specified position.

(c). long getItemId(int position

This method will retrieve the row id that's associated with the specified position in the list.It will take as a parameter the position of the item within the adapter's data set whose row id we want. It will return the id of the item at the specified position.

(c). View getView(int position,View convertView,ViewGroup parent)

This method as you cans ee returns an android.view.View object. This returned View object will be responsible for displaying data.

This is the data whose position is specified by the integer passed as a parameter in this method.There are two ways of creating this View.

First manually by instantiating.

Secondly by Inflation from a Layout resource(most common). After the inflation, the adapterview like ListView and GridView will apply the default parameters. Now this happens only if did not use the inflate(int,ViewGroup,boolean) method of the android.view.LayoutInflater class to specify the root view and prevent attachment to the root. There are three parameters passed.

The position represents the position of the item within the adapter's data set. The convertView. This represents the already inflated View object that we want to reuse. You want to check that this View actually exists by checking if it's not null before using. If it is then you inflate it. It's also possible to create new views for example that can be used by heterogeneous lists. The parent is basically a ViewGroup onto which this view will be attached to.

Types of Adapters

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

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.

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.

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.

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.

Cheers.

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