Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class NavigationDrawerAdapter extends ArrayAdapter<Object> {
- private static final int HEADER_ROW = 0;
- private static final int CONTACT_DETAIL_ROW = 1;
- private static final int PREFERENCE_ROW = 2;
- private static final int LINK = 3;
- private static final int[] ROW_TYPES = {HEADER_ROW, CONTACT_DETAIL_ROW, PREFERENCE_ROW, LINK};
- private Activity mHost;
- private List<Object> mDrawerItemList = new ArrayList<Object>();
- public NavigationDrawerAdapter(Activity activity, int resource, List<Object> objectList) {
- super(activity, resource, objectList);
- this.mHost = activity;
- this.mDrawerItemList = objectList;
- }
- @Override
- public int getItemViewType(int position) {
- if (mDrawerItemList.get(position) instanceof NavDrawerLinkItem) {
- return LINK;
- } else if (mDrawerItemList.get(position) instanceof NavDrawerContactItem) {
- return CONTACT_DETAIL_ROW;
- } else if (mDrawerItemList.get(position) instanceof NavDrawerPreferenceItem) {
- return PREFERENCE_ROW;
- } else {
- return HEADER_ROW;
- }
- }
- @Override
- public int getViewTypeCount() {
- return ROW_TYPES.length;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- LinkItemHolder linkItemHolder;
- ContactItemHolder contactItemHolder;
- PreferenceItemHolder preferenceItemHolder;
- HeaderItemHolder headerItemHolder;
- LayoutInflater inflater = mHost.getLayoutInflater();
- switch (getItemViewType(position)) {
- case LINK:
- // null our other view holders
- contactItemHolder = null;
- preferenceItemHolder = null;
- headerItemHolder = null;
- if (convertView == null) {
- convertView = inflater.inflate(R.layout.navigation_drawer_link_item, parent, false);
- linkItemHolder = new LinkItemHolder(convertView);
- convertView.setTag(linkItemHolder);
- } else {
- linkItemHolder = (LinkItemHolder) convertView.getTag();
- }
- NavDrawerLinkItem linkItem = (NavDrawerLinkItem) this.mDrawerItemList.get(position);
- linkItemHolder.linkName.setText(linkItem.getItemName());
- break;
- case CONTACT_DETAIL_ROW:
- // null our other view holders
- linkItemHolder = null;
- preferenceItemHolder = null;
- headerItemHolder = null;
- if (convertView == null) {
- convertView = inflater.inflate(R.layout.navigation_drawer_contact_item, parent, false);
- contactItemHolder = new ContactItemHolder(convertView);
- convertView.setTag(contactItemHolder);
- } else {
- contactItemHolder = (ContactItemHolder) convertView.getTag();
- }
- NavDrawerContactItem contactItem = (NavDrawerContactItem) this.mDrawerItemList.get(position);
- contactItemHolder.someTextView.setText(contactItem.getItemName());
- break;
- case PREFERENCE_ROW:
- // null our other view holders
- linkItemHolder = null;
- contactItemHolder = null;
- headerItemHolder = null;
- if (convertView == null) {
- convertView = inflater.inflate(R.layout.navigation_drawer_preference_item, parent, false);
- preferenceItemHolder = new PreferenceItemHolder(convertView);
- convertView.setTag(preferenceItemHolder);
- } else {
- preferenceItemHolder = (PreferenceItemHolder) convertView.getTag();
- }
- NavDrawerPreferenceItem preferenceItem = (NavDrawerPreferenceItem) this.mDrawerItemList.get(position);
- preferenceItemHolder.someTextView.setText(preferenceItem.getItemName());
- break;
- case HEADER_ROW:
- // null our other view holders
- linkItemHolder = null;
- contactItemHolder = null;
- preferenceItemHolder = null;
- if (convertView == null) {
- convertView = inflater.inflate(R.layout.navigation_drawer_header_item, parent, false);
- headerItemHolder = new HeaderItemHolder(convertView);
- convertView.setTag(headerItemHolder);
- } else {
- headerItemHolder = (HeaderItemHolder) convertView.getTag();
- }
- NavDrawerHeaderItem headerItem = (NavDrawerHeaderItem) this.mDrawerItemList.get(position);
- headerItemHolder.someTextView.setText(headerItem.getItemName());
- break;
- }
- return convertView;
- }
- private static class LinkItemHolder {
- TextView linkName;
- LinkItemHolder(View v) {
- this.linkName = (TextView) v.findViewById(R.id.navigation_drawer_link_item);
- }
- }
- private static class PreferenceItemHolder {
- TextView someTextView;
- PreferenceItemHolder(View v) {
- this.someTextView = (TextView) v.findViewById(R.id.navigation_drawer_preference_item);
- }
- }
- private static class HeaderItemHolder {
- TextView someTextView;
- HeaderItemHolder(View v) {
- this.someTextView = (TextView) v.findViewById(R.id.navigation_drawer_header_item);
- }
- }
- private static class ContactItemHolder {
- TextView someTextView;
- ContactItemHolder(View v) {
- this.someTextView = (TextView) v.findViewById(R.id.navigation_drawer_contact_item);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement