package bf.io.openshop.ux.adapters;
import android.app.Activity;
import android.content.Context;
import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Picasso;
import java.util.List;
import bf.io.openshop.R;
import bf.io.openshop.entities.Shop;
/**
* Simple arrayAdapter for shop selection.
*/
public class ShopSpinnerAdapter extends ArrayAdapter<Shop> {
private static final int layoutID = R.layout.list_item_shops;
private final boolean viewTextWhite;
private LayoutInflater layoutInflater;
private List<Shop> shops;
/**
* Creates an adapter for shop selection.
*
* @param activity activity context.
* @param shops list of items.
* @param viewTextWhite true if text should be white.
*/
public ShopSpinnerAdapter(Activity activity, List<Shop> shops, boolean viewTextWhite) {
super(activity, layoutID, shops);
this.layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.shops = shops;
this.viewTextWhite = viewTextWhite;
}
public int getCount() {
return shops.size();
}
public Shop getItem(int position) {
return shops.get(position);
}
public long getItemId(int position) {
return shops.get(position).getId();
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return getCustomView(position, convertView, parent, true);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getCustomView(position, convertView, parent, false);
}
private View getCustomView(int position, View convertView, ViewGroup parent, boolean dropdown) {
// Timber.d("getView Position: " + position + ". ConvertView: " + convertView);
View v = convertView;
ListItemHolder holder;
if (v == null) {
v = layoutInflater.inflate(layoutID, parent, false);
holder = new ListItemHolder();
holder.shopLanguageName = (TextView) v.findViewById(R.id.shop_language_name);
holder.shopFlagIcon = (ImageView) v.findViewById(R.id.shop_flag_icon);
v.setTag(holder);
} else {
holder = (ListItemHolder) v.getTag();
}
Shop shop = shops.get(position);
if (dropdown || !viewTextWhite) {
holder.shopLanguageName.setTextColor(ContextCompat.getColor(getContext(), R.color.textPrimary));
} else {
holder.shopLanguageName.setTextColor(ContextCompat.getColor(getContext(), R.color.textIconColorPrimary));
}
Picasso.with(getContext()).cancelRequest(holder.shopFlagIcon);
if (shop != null) {
holder.shopLanguageName.setText(shop.getName());
Picasso.with(getContext()).load(shop.getFlagIcon()).into(holder.shopFlagIcon);
}
return v;
}
static class ListItemHolder {
TextView shopLanguageName;
ImageView shopFlagIcon;
}
}