1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
|
public class NavDrawerAdapter extends ArrayAdapter<NavDrawerItem> {
private LayoutInflater inflater;
public NavDrawerAdapter(Context context, int textViewResourceId, ArrayList<NavDrawerItem> objects) {
super(context, textViewResourceId, objects);
this.inflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null ;
NavDrawerItem menuItem = getItem(position);
if ( menuItem.getType() == NavMenuItem.ITEM_TYPE ) {
view = getItemView(convertView, parent, menuItem );
} else if(menuItem.getType() == NavDrawerHomeItem.ITEM_TYPE) {
view = getHomeItemView(convertView, parent, menuItem );
} else {
view = getSectionView(convertView, parent, menuItem);
}
return view ;
}
public View getHomeItemView( View convertView, ViewGroup parentView, NavDrawerItem navDrawerItem ) {
NavDrawerHomeItem navDrawerHomeItem = (NavDrawerHomeItem) navDrawerItem ;
NavHomeItemHolder navHomeItemHolder = null;
if (convertView == null) {
convertView = inflater.inflate( R.layout.navdrawer_home_item, parentView, false);
TextView labelMainView = (TextView) convertView
.findViewById( R.id.text_main_name);
TextView labelSubView = (TextView) convertView
.findViewById( R.id.sub_text_name);
ImageView iconView = (ImageView) convertView
.findViewById( R.id.left_pic );
navHomeItemHolder = new NavHomeItemHolder();
navHomeItemHolder.labelView = labelMainView ;
navHomeItemHolder.subLabelView = labelSubView;
navHomeItemHolder.iconView = iconView ;
convertView.setTag(navHomeItemHolder);
}
if ( navHomeItemHolder == null ) {
navHomeItemHolder = (NavHomeItemHolder) convertView.getTag();
}
navHomeItemHolder.labelView.setText(navDrawerHomeItem.getLabelDepartement());
navHomeItemHolder.subLabelView.setText(navDrawerHomeItem.getLabel());
navHomeItemHolder.iconView.setImageResource(navDrawerHomeItem.getIcon());
return convertView;
}
public View getItemView( View convertView, ViewGroup parentView, NavDrawerItem navDrawerItem ) {
NavMenuItem menuItem = (NavMenuItem) navDrawerItem ;
NavMenuItemHolder navMenuItemHolder = null;
if (convertView == null) {
convertView = inflater.inflate( R.layout.navdrawer_item, parentView, false);
TextView labelView = (TextView) convertView
.findViewById( R.id.navmenuitem_label );
ImageView iconView = (ImageView) convertView
.findViewById( R.id.navmenuitem_icon );
navMenuItemHolder = new NavMenuItemHolder();
navMenuItemHolder.labelView = labelView ;
navMenuItemHolder.iconView = iconView ;
convertView.setTag(navMenuItemHolder);
}
if ( navMenuItemHolder == null ) {
navMenuItemHolder = (NavMenuItemHolder) convertView.getTag();
}
navMenuItemHolder.labelView.setText(menuItem.getLabel());
navMenuItemHolder.iconView.setImageResource(menuItem.getIcon());
return convertView ;
}
public View getSectionView(View convertView, ViewGroup parentView,
NavDrawerItem navDrawerItem) {
NavMenuSection menuSection = (NavMenuSection) navDrawerItem ;
NavMenuSectionHolder navMenuItemHolder = null;
if (convertView == null) {
convertView = inflater.inflate( R.layout.navdrawer_section, parentView, false);
TextView labelView = (TextView) convertView.findViewById( R.id.navmenusection_label );
navMenuItemHolder = new NavMenuSectionHolder();
navMenuItemHolder.labelView = labelView ;
convertView.setTag(navMenuItemHolder);
}
if ( navMenuItemHolder == null ) {
navMenuItemHolder = (NavMenuSectionHolder) convertView.getTag();
}
navMenuItemHolder.labelView.setText(menuSection.getLabel());
return convertView ;
}
@Override
public int getViewTypeCount() {
return 3;
}
@Override
public int getItemViewType(int position) {
return this.getItem(position).getType();
}
@Override
public boolean isEnabled(int position) {
return getItem(position).isEnabled();
}
private static class NavHomeItemHolder {
private TextView labelView;
private TextView subLabelView;
private ImageView iconView;
}
private static class NavMenuItemHolder {
private TextView labelView;
private ImageView iconView;
}
private class NavMenuSectionHolder {
private TextView labelView;
}
public void setDataSource(ArrayList<NavDrawerItem> objects) {
if (objects!= null){
clear();
for (NavDrawerItem dItem : objects) {
insert(dItem, getCount());
}
}
notifyDataSetChanged();
}
} |
Partager