package com.mobmonkey.mobmonkeyandroid.arrayadapters; import com.mobmonkey.mobmonkeyandroid.R; import com.mobmonkey.mobmonkeysdk.utils.MMLocationListener; import com.mobmonkey.mobmonkeysdk.utils.MMLocationManager; import android.content.Context; import android.graphics.Color; import android.graphics.Typeface; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; /** * @author Dezapp, LLC * */ public class MMArrayAdapter extends ArrayAdapter<Object> { private Context context; private LayoutInflater layoutInflater; private int listRowLayout; private int[] icons; private String[] items; private int[] indicatorIcons; private int textAppearanceId; private Typeface textTypeface; private OnClickListener indicatorIconOnClickListener; public MMArrayAdapter(Context context, int listRowLayout, int[] icons, String[] items, int[] indicatorIcons, int textAppearanceId, Typeface textTypeface, OnClickListener indicatorIconOnClickListener) { super(context, listRowLayout, items); this.context = context; layoutInflater = LayoutInflater.from(context); this.listRowLayout = listRowLayout; this.icons = icons; this.items = items; this.indicatorIcons = indicatorIcons; this.textAppearanceId = textAppearanceId; this.textTypeface = textTypeface; this.indicatorIconOnClickListener = indicatorIconOnClickListener; } /* (non-Javadoc) * @see android.widget.ArrayAdapter#getView(int, android.view.View, android.view.ViewGroup) */ @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if(convertView == null) { convertView = layoutInflater.inflate(listRowLayout, null); viewHolder = new ViewHolder(); viewHolder.ivIcon = (ImageView) convertView.findViewById(R.id.ivicon); viewHolder.tvLabel = (TextView) convertView.findViewById(R.id.tvlabel); viewHolder.ivIndicatorIcon = (ImageView) convertView.findViewById(R.id.ivindicatoricon); viewHolder.tvLabel.setTextAppearance(context, textAppearanceId); viewHolder.tvLabel.setTypeface(textTypeface); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } //TODO: Add icons to the top level categories on search screen here. if(icons.length != 0) viewHolder.ivIcon.setImageResource(icons[position]); viewHolder.tvLabel.setText(items[position]); if(!MMLocationManager.isGPSEnabled() || MMLocationManager.getGPSLocation() == null) { viewHolder.tvLabel.setTextColor(Color.GRAY); } if(indicatorIcons.length!=0) viewHolder.ivIndicatorIcon.setImageResource(indicatorIcons[position]); if(indicatorIconOnClickListener != null && position == 1) { viewHolder.ivIndicatorIcon.setClickable(true); viewHolder.ivIndicatorIcon.setOnClickListener(indicatorIconOnClickListener); } convertView.setBackgroundColor(Color.TRANSPARENT); return convertView; } @Override public boolean isEnabled(int position) { if(items[position].equals(context.getString(R.string.tv_no_phone_number_available))) { return false; } else { return true; } } /** * Private class that holds the views of the {@link ListView} row layout * @author Dezapp, LLC * */ private class ViewHolder { ImageView ivIcon; TextView tvLabel; ImageView ivIndicatorIcon; } }