package com.mozu.mozuandroidinstoreassistant.app.customer;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import com.mozu.mozuandroidinstoreassistant.app.R;
import com.mozu.mozuandroidinstoreassistant.app.data.IData;
import com.mozu.mozuandroidinstoreassistant.app.data.customer.CustomerAccountAttribute;
import com.mozu.mozuandroidinstoreassistant.app.data.customer.CustomerOverviewDataItem;
import com.mozu.mozuandroidinstoreassistant.app.layout.IRowLayout;
import java.util.ArrayList;
public class CustomerAccountInfoAdapter extends BaseAdapter {
private enum RowType {
HEADER_ROW,
ATTRIBUTE_ROW,
EMPTY_ROW
}
private ArrayList<IData> mData;
public CustomerAccountInfoAdapter(ArrayList<IData> data) {
mData = data;
}
@Override
public int getCount() {
return mData.size();
}
public void setData(ArrayList<IData> data) {
if (data != null) {
mData.clear();
mData = data;
}
}
@Override
public int getItemViewType(int position) {
return getViewType(getItem(position)).ordinal();
}
@Override
public IData getItem(int i) {
return mData.get(i);
}
@Override
public long getItemId(int i) {
return (long) i;
}
@Override
public int getViewTypeCount() {
return RowType.values().length;
}
public RowType getViewType(IData dataItem) {
if (dataItem instanceof CustomerAccountAttribute) {
return RowType.ATTRIBUTE_ROW;
} else if (dataItem instanceof CustomerOverviewDataItem) {
return RowType.HEADER_ROW;
} else {
return RowType.EMPTY_ROW;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
IData dataItem = getItem(position);
View view;
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
if (convertView == null) {
if (getViewType(dataItem) == RowType.ATTRIBUTE_ROW) {
view = inflater.inflate(R.layout.customer_attribute_layout, null);
} else if (getViewType(dataItem) == RowType.HEADER_ROW) {
view = inflater.inflate(R.layout.customer_accountinfo_header, null);
} else {
view = inflater.inflate(R.layout.empty_row_layout, null);
}
} else {
view = convertView;
}
((IRowLayout) view).bindData(dataItem);
return view;
}
}