class EntryAdapter extends BaseAdapter { public static final int TYPE_COUNT = 2; private static final int TYPE_TIPS = 0; private static final int TYPE_EVENT = 1; private Context context; private List entries; public EntryAdapter(Context context, List entries) { this.context = context; this.entries = entries; } @Override public int getCount() { return entries.size() + 1; } @Override public Object getItem(int position) { Object item = null; if (entries != null && !entries.isEmpty()) { if (position == 0) { Entry entry = entries.get(0); if (entry != null) { item = entry.getMagictouchs(); } } else { item = entries.get(position - 1); } } return item; } @Override public long getItemId(int i) { return i; } @Override public View getView(int position, View view, ViewGroup viewGroup) { int viewType = getItemViewType(position); switch (viewType) { case TYPE_TIPS: { // Creating view for tips break; } case TYPE_EVENT: { // Creating view entry break; } } return view; } @Override public int getItemViewType(int position) { return position == 0 ? TYPE_TIPS : TYPE_EVENT; } @Override public int getViewTypeCount() { return TYPE_COUNT; } }