|
In an earlier post,
I wrote about the SimpleAdapter and how SimpleAdapter allows significant flexibility
when laying out list items. SimpleAdapter is great but then I became curious what
it takes to write an adapter.
Adapters are simple devices. On one side of the adapter is a data structure like
a Java object storing data. SimpleAdapter handles Java objects that can be meaningfully
translated into Strings by invoking the objects' toString() method (every Java object
supports that but for quite many of them, the toString() format is not meaningful
for the end user). On the other side of the adapter, there is a View that the data
structure was transformed into. That View is displayed to the user. As we use Adapters
to supports list views, the Adapter handles lists of Java objects (that are eventually
transformed into a list of Views).
Android's built-in adapters are sufficiently versatile but it is often handy to
create a custom adapter. Let's look at the following example.

You can download the example code from here.
The example is a simple weather display. A weather entry consists of 3 data items:
name of the city (String), temperature in the city in degrees (integer) and an icon
showing whether the sky is sunny, overcast or it is raining. The first two entries
could be handled using SimpleAdapter but the third cannot: SimpleAdapter does not
handle icons. Therefore we create our own adapter, called WeatherAdapter that takes
list of Weather objects storing the weather info and turns that list into Views
that can be rendered as list rows.
The most important part of the trick happens in a private class in WeatherAdapter.java
called WeatherAdapterView. WeatherAdapter does nothing more than manages a list
of WeatherAdapterViews. WeatherAdapterView is the View the Weather data object is
mapped to. It is itself a composite View, composed by a LinearLayout. The LinearLayout
is set up programmatically (as opposed to an XML layout) and contains two TextViews
and one ImageView. The ImageView encapsulates the icon. It is worth checking how
the icon images are referenced in Weather.java: as the icons are in the res/drawable
directory, R.java has integer IDs for them. The getSkyResource() method in the Weather
class just returns this resource ID based on the sky member variable of the Weather
class.
Source: http://mylifewithandroid.blogspot.com/2008/04/custom-widget-adapters.html
|
How to display a JPG...
Is that posible to zoom in and drag p...
Making a custom Andr...
Cool - I will use it carefully i promise
How to display a JPG...
problem in image loading - i have exe...
Introducing Calculon...
Thank You for your contribution - Hi,...
Debug a Native Appli...
Never mind, I somehow overlooked the ...