package com.heyzap.sdk;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
public class FeedAdapter extends ArrayAdapter<Feedlette> {
private HashMap<Object, Integer> seen;
private FeedView feedView;
public FeedAdapter(Context context) {
this(context, new ArrayList<Feedlette>());
}
public FeedAdapter(Context context, List<Feedlette> items) {
super(context, 0, items);
this.seen = new HashMap<Object, Integer>();
for(Feedlette f : items){
trackItemClass(f);
}
}
public void setFeedView(FeedView feedView){
this.feedView = feedView;
}
private void trackItemClass(Feedlette f) {
if(!seen.containsKey(f.getClass())) {
seen.put(f.getClass(), seen.size());
}
}
@Override
public void add(Feedlette f){
trackItemClass(f);
super.add(f);
}
@Override
public void insert(Feedlette f, int idx){
trackItemClass(f);
super.insert(f,idx);
}
@Override
public int getViewTypeCount(){
return Math.max(10, seen.size());
}
@Override
public int getItemViewType(int position){
return seen.get(getItem(position).getClass());
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
onNewPosition(position);
return super.getItem(position).render(convertView, this.getContext(), this.feedView);
}
protected void onNewPosition(int position){}
public List<Feedlette> getItems(){
List<Feedlette> fl = new ArrayList<Feedlette>();
for(int i = 0; i < super.getCount(); ++i)
fl.add(super.getItem(i));
return fl;
}
}