Advertisement
bmote

NavigationDrawerAdapter.java

Sep 4th, 2014
486
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.88 KB | None | 0 0
  1. public class NavigationDrawerAdapter extends ArrayAdapter<Object> {
  2.  
  3.     private static final int HEADER_ROW = 0;
  4.     private static final int CONTACT_DETAIL_ROW = 1;
  5.     private static final int PREFERENCE_ROW = 2;
  6.     private static final int LINK = 3;
  7.     private static final int[] ROW_TYPES = {HEADER_ROW, CONTACT_DETAIL_ROW, PREFERENCE_ROW, LINK};
  8.  
  9.     private Activity mHost;
  10.     private List<Object> mDrawerItemList = new ArrayList<Object>();
  11.  
  12.     public NavigationDrawerAdapter(Activity activity, int resource, List<Object> objectList) {
  13.         super(activity, resource, objectList);
  14.         this.mHost = activity;
  15.         this.mDrawerItemList = objectList;
  16.     }
  17.  
  18.     @Override
  19.     public int getItemViewType(int position) {
  20.         if (mDrawerItemList.get(position) instanceof NavDrawerLinkItem) {
  21.             return LINK;
  22.         } else if (mDrawerItemList.get(position) instanceof NavDrawerContactItem) {
  23.             return CONTACT_DETAIL_ROW;
  24.         } else if (mDrawerItemList.get(position) instanceof NavDrawerPreferenceItem) {
  25.             return PREFERENCE_ROW;
  26.         } else {
  27.             return HEADER_ROW;
  28.         }
  29.     }
  30.  
  31.     @Override
  32.     public int getViewTypeCount() {
  33.         return ROW_TYPES.length;
  34.     }
  35.  
  36.     @Override
  37.     public View getView(int position, View convertView, ViewGroup parent) {
  38.  
  39.         LinkItemHolder linkItemHolder;
  40.         ContactItemHolder contactItemHolder;
  41.         PreferenceItemHolder preferenceItemHolder;
  42.         HeaderItemHolder headerItemHolder;
  43.  
  44.         LayoutInflater inflater = mHost.getLayoutInflater();
  45.  
  46.         switch (getItemViewType(position)) {
  47.  
  48.             case LINK:
  49.  
  50.                 // null our other view holders
  51.                 contactItemHolder = null;
  52.                 preferenceItemHolder = null;
  53.                 headerItemHolder = null;
  54.  
  55.                 if (convertView == null) {
  56.                     convertView = inflater.inflate(R.layout.navigation_drawer_link_item, parent, false);
  57.                     linkItemHolder = new LinkItemHolder(convertView);
  58.                     convertView.setTag(linkItemHolder);
  59.                 } else {
  60.                     linkItemHolder = (LinkItemHolder) convertView.getTag();
  61.                 }
  62.                 NavDrawerLinkItem linkItem = (NavDrawerLinkItem) this.mDrawerItemList.get(position);
  63.                 linkItemHolder.linkName.setText(linkItem.getItemName());
  64.                 break;
  65.  
  66.             case CONTACT_DETAIL_ROW:
  67.  
  68.                 // null our other view holders
  69.                 linkItemHolder = null;
  70.                 preferenceItemHolder = null;
  71.                 headerItemHolder = null;
  72.  
  73.                 if (convertView == null) {
  74.                     convertView = inflater.inflate(R.layout.navigation_drawer_contact_item, parent, false);
  75.                     contactItemHolder = new ContactItemHolder(convertView);
  76.                     convertView.setTag(contactItemHolder);
  77.                 } else {
  78.                     contactItemHolder = (ContactItemHolder) convertView.getTag();
  79.                 }
  80.                 NavDrawerContactItem contactItem = (NavDrawerContactItem) this.mDrawerItemList.get(position);
  81.                 contactItemHolder.someTextView.setText(contactItem.getItemName());
  82.                 break;
  83.  
  84.             case PREFERENCE_ROW:
  85.  
  86.                 // null our other view holders
  87.                 linkItemHolder = null;
  88.                 contactItemHolder = null;
  89.                 headerItemHolder = null;
  90.  
  91.                 if (convertView == null) {
  92.                     convertView = inflater.inflate(R.layout.navigation_drawer_preference_item, parent, false);
  93.                     preferenceItemHolder = new PreferenceItemHolder(convertView);
  94.                     convertView.setTag(preferenceItemHolder);
  95.                 } else {
  96.                     preferenceItemHolder = (PreferenceItemHolder) convertView.getTag();
  97.                 }
  98.                 NavDrawerPreferenceItem preferenceItem = (NavDrawerPreferenceItem) this.mDrawerItemList.get(position);
  99.                 preferenceItemHolder.someTextView.setText(preferenceItem.getItemName());
  100.                 break;
  101.  
  102.             case HEADER_ROW:
  103.  
  104.                 // null our other view holders
  105.                 linkItemHolder = null;
  106.                 contactItemHolder = null;
  107.                 preferenceItemHolder = null;
  108.  
  109.                 if (convertView == null) {
  110.                     convertView = inflater.inflate(R.layout.navigation_drawer_header_item, parent, false);
  111.                     headerItemHolder = new HeaderItemHolder(convertView);
  112.                     convertView.setTag(headerItemHolder);
  113.                 } else {
  114.                     headerItemHolder = (HeaderItemHolder) convertView.getTag();
  115.                 }
  116.                 NavDrawerHeaderItem headerItem = (NavDrawerHeaderItem) this.mDrawerItemList.get(position);
  117.                 headerItemHolder.someTextView.setText(headerItem.getItemName());
  118.                 break;
  119.         }
  120.         return convertView;
  121.     }
  122.  
  123.     private static class LinkItemHolder {
  124.         TextView linkName;
  125.  
  126.         LinkItemHolder(View v) {
  127.             this.linkName = (TextView) v.findViewById(R.id.navigation_drawer_link_item);
  128.         }
  129.     }
  130.  
  131.     private static class PreferenceItemHolder {
  132.         TextView someTextView;
  133.  
  134.         PreferenceItemHolder(View v) {
  135.             this.someTextView = (TextView) v.findViewById(R.id.navigation_drawer_preference_item);
  136.         }
  137.     }
  138.  
  139.     private static class HeaderItemHolder {
  140.         TextView someTextView;
  141.  
  142.         HeaderItemHolder(View v) {
  143.             this.someTextView = (TextView) v.findViewById(R.id.navigation_drawer_header_item);
  144.         }
  145.     }
  146.  
  147.     private static class ContactItemHolder {
  148.         TextView someTextView;
  149.  
  150.         ContactItemHolder(View v) {
  151.             this.someTextView = (TextView) v.findViewById(R.id.navigation_drawer_contact_item);
  152.         }
  153.     }
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement