package com.buddycloud.card; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import android.support.v4.app.Fragment; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; public class CardListAdapter extends BaseAdapter { private List<Card> cards = new ArrayList<Card>(); private Map<String, Card> cardsRef = new HashMap<String, Card>(); private Fragment fragment; public void setFragment(Fragment fragment) { this.fragment = fragment; } public Fragment getFragment() { return fragment; } @Override public int getCount() { return cards.size(); } @Override public Object getItem(int arg0) { return cards.get(arg0); } @Override public long getItemId(int arg0) { return cards.get(arg0).hashCode(); } @Override public View getView(int position, View convertView, ViewGroup viewGroup) { return cards.get(position).getView(position, convertView, viewGroup); } public void addCard(Card card) { String postId = card.getPost().optString("id"); Card oldCard = cardsRef.get(postId); if (oldCard == null) { cardsRef.put(postId, card); cards.add(card); } else { oldCard.setPost(card.getPost()); } card.setParentAdapter(this); } public Card getCard(String itemId) { return cardsRef.get(itemId); } public void sort() { Collections.sort(cards); notifyDataSetChanged(); } public void clear() { cards.clear(); cardsRef.clear(); } public void remove(String postId) { Card removed = cardsRef.remove(postId); if (removed != null) { cards.remove(removed); } notifyDataSetChanged(); } }