package com.piusvelte.sonet.adapter; import android.content.Context; import android.support.annotation.LayoutRes; import android.support.annotation.MenuRes; import android.support.v7.internal.view.menu.MenuBuilder; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import com.piusvelte.sonet.R; /** * Created by bemmanuel on 5/13/15. */ public class MenuItemAdapter extends BaseAdapter { private final Context mContext; private final Menu mMenu; @LayoutRes private final int mItemLayoutResId; public MenuItemAdapter(Context context, @MenuRes int menuResId, @LayoutRes int itemLayoutResId) { mContext = context; mMenu = new MenuBuilder(mContext); mItemLayoutResId = itemLayoutResId; MenuInflater mi = new MenuInflater(mContext); mi.inflate(menuResId, mMenu); } @Override public int getCount() { return mMenu.size(); } @Override public MenuItem getItem(int position) { return mMenu.getItem(position); } @Override public long getItemId(int position) { return getItem(position).getItemId(); } @Override public View getView(int position, View convertView, ViewGroup parent) { final ViewHolder viewHolder; if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(mItemLayoutResId, parent, false); viewHolder = new ViewHolder(); viewHolder.title = (TextView) convertView.findViewById(android.R.id.text1); viewHolder.title.setCompoundDrawablePadding(mContext.getResources().getDimensionPixelSize(R.dimen.material_padding)); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } MenuItem menuItem = getItem(position); convertView.setId(menuItem.getItemId()); if (viewHolder != null) { viewHolder.title.setText(menuItem.getTitle()); viewHolder.title.setCompoundDrawablesWithIntrinsicBounds(menuItem.getIcon(), null, null, null); } return convertView; } static class ViewHolder { public TextView title; } }