package com.brew.brewshop.storage; import android.content.Context; import android.graphics.Typeface; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import com.brew.brewshop.R; import com.brew.brewshop.storage.inventory.InventoryItem; import com.brew.brewshop.storage.recipes.Hop; import com.brew.brewshop.storage.recipes.Malt; import com.brew.brewshop.storage.recipes.Yeast; import java.util.ArrayList; import java.util.List; public class NameableAdapter<T> extends BaseAdapter { private static final String TAG = NameableAdapter.class.getName(); private String mCustomName; private List<T> mList; private Context mContext; public NameableAdapter(Context context, List<T> nameables) { this(context, nameables, null); } public NameableAdapter(Context context, List<T> nameables, String customName) { mCustomName = customName; mContext = context; mList = new ArrayList<T>(); if (mCustomName != null) { mList.add((T) new CustomNameable(customName)); } for (T nameable : nameables) { mList.add(nameable); } } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); TextView rowView = (TextView) inflater.inflate(R.layout.spinner_dropdown_item, parent, false); Nameable item = (Nameable) getItem(position); rowView.setText(item.getName()); modifyView(rowView); return rowView; } @Override public int getCount() { return mList.size(); } @Override public Object getItem(int i) { return mList.get(i); } @Override public long getItemId(int i) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); TextView rowView = (TextView) inflater.inflate(R.layout.spinner_item, parent, false); Nameable item = (Nameable) getItem(position); rowView.setText(item.getName()); modifyView(rowView); return rowView; } public void setNamedItem(Nameable selected, Nameable stored, String customName) { if (selected.getName().equals(mCustomName)) { if (customName.length() > 0) { stored.setName(customName); } else { stored.setName(mCustomName); } } else { stored.setName(selected.getName()); } } private void modifyView(View view) { TextView textView = (TextView) view; if (textView.getText().equals(mCustomName)) { textView.setTypeface(null, Typeface.ITALIC); } else { textView.setTypeface(null, Typeface.NORMAL); } } }