Skip to content
A small framework to make using the 'ViewHolder' pattern a bit clearer
Pull request Compare This branch is 4 commits behind rtyley:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

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(;
    fooDate = (TextView) v.findViewById(;
    icon = (ImageView) v.findViewById(;

    public void updateViewFor(Foo foo) {
Something went wrong with that request. Please try again.