package net.dev123.yibo.service.adapter; import java.util.ArrayList; import java.util.List; import net.dev123.commons.util.ListUtil; import net.dev123.mblog.entity.Group; import net.dev123.yibo.GroupActivity; import net.dev123.yibo.R; import net.dev123.yibo.db.GroupDao; import net.dev123.yibo.db.LocalAccount; import android.view.View; import android.view.ViewGroup; public class GroupListAdapter extends CacheAdapter<Group> { private static final int ITEM_VIEW_TYPE_ADD = 0; private static final int ITEM_VIEW_TYPE_DATA = 1; private List<Group> groupList; public GroupListAdapter(GroupActivity context, LocalAccount account) { super(context, account); groupList = new ArrayList<Group>(); groupList.add(null);//作为首行; } @Override public int getCount() { return groupList.size(); } @Override public Object getItem(int position) { if (position < 0 || position >= groupList.size()) { return null; } return groupList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { GroupHolder holder = null; if (getItemViewType(position) == ITEM_VIEW_TYPE_ADD) { if (convertView == null) { convertView = inflater.inflate(R.layout.list_item_group_add, null); holder = new GroupHolder(convertView); convertView.setTag(holder); } } else if (getItemViewType(position) == ITEM_VIEW_TYPE_DATA) { if (convertView == null) { convertView = inflater.inflate(R.layout.list_item_group, null); holder = new GroupHolder(convertView); convertView.setTag(holder); } else { holder = (GroupHolder)convertView.getTag(); } Group group = (Group)getItem(position); holder.tvGroupName.setText(group.getName()); } return convertView; } @Override public boolean addCacheToFirst(List<Group> list) { return false; } @Override public boolean addCacheToDivider(Group value, List<Group> list) { if (ListUtil.isEmpty(list)) { return false; } groupList.addAll(list); this.notifyDataSetChanged(); return true; } @Override public boolean addCacheToLast(List<Group> list) { if (ListUtil.isEmpty(list)) { return false; } groupList.addAll(list); this.notifyDataSetChanged(); return true; } @Override public boolean remove(Group t) { if (t == null) { return false; } boolean isSuccess = groupList.remove(t); if (isSuccess) { GroupDao dao = new GroupDao(context); dao.delete(account, t); this.notifyDataSetChanged(); } return isSuccess; } @Override public Group getMax() { return null; } @Override public Group getMin() { return null; } @Override public void clear() { } @Override public int getItemViewType(int position) { if (position == 0) { return ITEM_VIEW_TYPE_ADD; } else { return ITEM_VIEW_TYPE_DATA; } } @Override public int getViewTypeCount() { return 2; } }