package com.mozu.mozuandroidinstoreassistant.app.customer.adapters; import android.app.AlertDialog; import android.content.DialogInterface; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; import com.mozu.api.contracts.core.Address; import com.mozu.api.contracts.core.Phone; import com.mozu.api.contracts.customer.ContactType; import com.mozu.api.contracts.customer.CustomerContact; import com.mozu.mozuandroidinstoreassistant.app.R; import java.util.List; import butterknife.ButterKnife; import butterknife.InjectView; public class CustomerAddressesAdapter extends RecyclerView.Adapter<CustomerAddressesAdapter.ViewHolder> { private static String BILLING = "billing"; private static String SHIPPING = "shipping"; private final AddressDeleteListener addressDeleteListener; private List<CustomerContact> data; private AddressEditListener addressEditListener; public CustomerAddressesAdapter(List<CustomerContact> data, AddressEditListener addressEditListener, AddressDeleteListener addressDeleteListener) { this.data = data; this.addressEditListener = addressEditListener; this.addressDeleteListener = addressDeleteListener; } public void setData(List<CustomerContact> data) { this.data = data; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_address_card, parent, false); ViewHolder viewHolder = new ViewHolder(v); return viewHolder; } @Override public void onBindViewHolder(final ViewHolder holder, final int position) { CustomerContact customerContact = data.get(position); Address address = customerContact.getAddress(); Phone phone = customerContact.getPhoneNumbers(); holder.name.setText(customerContact.getFirstName() + " " + customerContact.getLastNameOrSurname()); holder.address1.setText(address.getAddress1()); if (address.getAddress2() != null && !address.getAddress2().isEmpty()) { holder.address2.setText(address.getAddress2()); holder.address2.setVisibility(View.VISIBLE); } holder.citystatezip.setText(address.getCityOrTown() + ", " + address.getStateOrProvince() + " " + address.getPostalOrZipCode()); holder.country.setText(address.getCountryCode()); if (phone.getHome() != null && !phone.getHome().isEmpty()) { holder.phoneNumber.setText("Phone: " + phone.getHome()); } else if (phone.getMobile() != null && !phone.getMobile().isEmpty()) { holder.phoneNumber.setText("Phone: " + phone.getMobile()); } else if (phone.getWork() != null && !phone.getWork().isEmpty()) { holder.phoneNumber.setText("Phone: " + phone.getWork()); } holder.email.setText(customerContact.getEmail()); for (ContactType type : customerContact.getTypes()) { if (type.getIsPrimary() && type.getName().equalsIgnoreCase(BILLING)) { holder.defaultBilling.setVisibility(View.VISIBLE); } if (type.getIsPrimary() && type.getName().equalsIgnoreCase(SHIPPING)) { holder.defaultShipping.setVisibility(View.VISIBLE); } } } @Override public int getItemCount() { return data.size(); } public interface AddressEditListener { void onEditAddressClicked(int position); } public interface AddressDeleteListener { void onDeleteAddressClicked(int position); } public class ViewHolder extends RecyclerView.ViewHolder { @InjectView(R.id.name) TextView name; @InjectView(R.id.address_1) TextView address1; @InjectView(R.id.address_2) TextView address2; @InjectView(R.id.citystatezip) TextView citystatezip; @InjectView(R.id.country) TextView country; @InjectView(R.id.phone_number) TextView phoneNumber; @InjectView(R.id.email) TextView email; @InjectView(R.id.delete) Button delete; @InjectView(R.id.edit) Button edit; @InjectView(R.id.customer_default_billing_address) TextView defaultBilling; @InjectView(R.id.customer_default_shipping_address) TextView defaultShipping; public ViewHolder(final View itemView) { super(itemView); ButterKnife.inject(this, itemView); delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new AlertDialog.Builder(itemView.getContext()) .setMessage(R.string.delete_address) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .setPositiveButton(R.string.delete, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { addressDeleteListener.onDeleteAddressClicked(getAdapterPosition()); } }) .create() .show(); } }); edit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { addressEditListener.onEditAddressClicked(getAdapterPosition()); } }); } } }