A small framework to make using the 'ViewHolder' pattern a bit clearer
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
src Support primitive view holder constructor parameters Feb 2, 2012
.gitignore Initial commit of Android ViewHolder ListViews, taken from Agit Apr 13, 2011
pom.xml [maven-release-plugin] prepare for next development iteration Feb 6, 2012


The aim is to reduce the boilerplate around writing your own ListAdapter class. With the library, you define two smaller classes, a ViewHolderFactory and a ViewHolder implementation.

Here's how you would set the adapter on your listView:

listView.setAdapter(new ViewHoldingListAdapter<Foo>(fooList, viewInflatorFor(context, foo_list_item), new ViewHolderFactory<Foo>() {
    public ViewHolder<Foo> createViewHolderFor(View view) {
    return new FooViewHolder(view);

Your FooViewHolder just does the job of the ViewHolder - holds the references to the required Views, and populates those views with the relevant fields from you Foo:

public class FooViewHolder implements ViewHolder<Foo> {
    private final TextView fooName,fooDate;
    private final ImageView icon;

    public FooViewHolder(View v) {
    this.avatarSession = avatarSession;
    fooName = (TextView) v.findViewById(R.id.foo_item_name);
    fooDate = (TextView) v.findViewById(R.id.foo_item_date);
    icon = (ImageView) v.findViewById(R.id.foo_item_icon);

    public void updateViewFor(Foo foo) {