package com.hupu.games.view.dynamicgrid; import android.widget.BaseAdapter; import java.util.HashMap; import java.util.List; /** * Author: alex askerov * Date: 9/6/13 * Time: 7:43 PM */ /** * Abstract adapter for {@link org.askerov.dynamicgrid.DynamicGridView} with sable items id; */ public abstract class AbstractDynamicGridAdapter extends BaseAdapter implements DynamicGridAdapterInterface { public static final int INVALID_ID = -1; private int nextStableId = 0; private HashMap<Object, Integer> mIdMap = new HashMap<Object, Integer>(); /** * Adapter must have stable id * * @return */ @Override public final boolean hasStableIds() { return true; } /** * creates stable id for object * * @param item */ protected void addStableId(Object item) { mIdMap.put(item, nextStableId++); } /** * create stable ids for list * * @param items */ protected void addAllStableId(List<?> items) { for (Object item : items) { addStableId(item); } } /** * get id for position * * @param position * @return */ @Override public final long getItemId(int position) { if (position < 0 || position >= mIdMap.size()) { return INVALID_ID; } Object item = getItem(position); return mIdMap.get(item); } /** * clear stable id map * should called when clear adapter data; */ protected void clearStableIdMap() { mIdMap.clear(); } /** * remove stable id for <code>item</code>. Should called on remove data item from adapter * * @param item */ protected void removeStableID(Object item) { mIdMap.remove(item); } }