package com.jparkie.aizoban.views.adapters; import android.content.Context; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.jparkie.aizoban.R; import com.jparkie.aizoban.utils.wrappers.NavigationWrapper; import java.util.ArrayList; import java.util.List; public class NavigationAdapter extends BaseAdapter { private Context mContext; private List<NavigationWrapper> mNavigationItems; private int mCurrentPosition; public NavigationAdapter(Context context, List<NavigationWrapper> navigationItems, int currentPosition) { mContext = context; mNavigationItems = navigationItems; if (mNavigationItems == null) { mNavigationItems = new ArrayList<NavigationWrapper>(); } mCurrentPosition = currentPosition; if (mCurrentPosition < 0 || mCurrentPosition > mNavigationItems.size() - 1) { mCurrentPosition = 0; } } @Override public int getCount() { return mNavigationItems.size(); } @Override public Object getItem(int position) { return mNavigationItems.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; View currentView = convertView; if (currentView == null) { currentView = LayoutInflater.from(mContext).inflate(R.layout.item_navigation, parent, false); viewHolder = new ViewHolder(currentView); currentView.setTag(viewHolder); } else { viewHolder = (ViewHolder) currentView.getTag(); } NavigationWrapper currentNavigationItem = mNavigationItems.get(position); if (position == mCurrentPosition) { viewHolder.renderView(mContext, currentNavigationItem, mContext.getResources().getColor(R.color.accentPinkA200), mContext.getResources().getColor(R.color.accentPinkA200)); } else { viewHolder.renderView(mContext, currentNavigationItem, mContext.getResources().getColor(R.color.icon), mContext.getResources().getColor(R.color.secondaryText)); } return currentView; } public int getCurrentPosition() { return mCurrentPosition; } public void setCurrentPosition(int newPosition) { mCurrentPosition = newPosition; notifyDataSetInvalidated(); } private static class ViewHolder { private ImageView mIconImageView; private TextView mTitleTextView; public ViewHolder(View itemView) { mIconImageView = (ImageView)itemView.findViewById(R.id.iconImageView); mTitleTextView = (TextView)itemView.findViewById(R.id.titleTextView); } public void renderView(Context context, NavigationWrapper navigationItem, int iconColor, int textColor) { setIcon(context.getResources().getDrawable(navigationItem.getIconResource()), iconColor); setTitle(context.getResources().getString(navigationItem.getTitleResource()), textColor); } private void setIcon(Drawable icon, int iconColor) { mIconImageView.setImageDrawable(icon); mIconImageView.setColorFilter(iconColor, PorterDuff.Mode.MULTIPLY); } private void setTitle(String text, int textColor) { mTitleTextView.setText(text); mTitleTextView.setTextColor(textColor); } } }