package com.qozix.mapview.viewmanagers; import java.util.LinkedList; import android.content.Context; import android.util.Log; import android.view.View; public class ViewPool<E extends View> { private ViewFactory<E> factory; private LinkedList<View> employed = new LinkedList<View>(); private LinkedList<View> unemployed = new LinkedList<View>(); public ViewPool( ViewFactory<E> f ) { factory = f; } public View employView( Context context ) { View v; if ( unemployed.size() > 0 ) { v = unemployed.get( 0 ); unemployed.remove( v ); } else { v = factory.fetch( context ); } employed.add( v ); Log.d( "ViewPool", "employed.size=" + employed.size() + ", unemployed.size=" + unemployed.size()); return v; } public void retireView( View v ) { if ( employed.contains( v ) ) { employed.remove( v ); unemployed.add( v ); } } }