package com.andexp.skinmixer.displaygroup;
import java.io.File;
import java.util.ArrayList;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter;
import com.andexp.skinmixer.R;
import com.andexp.skinmixer.skin.SkinGroupType;
public class AdapterMultiImageSkinPart extends BaseAdapter implements ListAdapter {
private ArrayList<String> mSkinPathList;
private Context mContext;
private LayoutInflater mLayoutInflater;
private OnSkinPartClickListener mOnSkinPartClickListener;
private SkinGroupType mGroupPart;
private static View mlastImageViewClicked;
public AdapterMultiImageSkinPart(Context context, ArrayList<String> skinPathList,
SkinGroupType groupType, OnSkinPartClickListener listener) {
mGroupPart = groupType;
mContext = context;
mSkinPathList = skinPathList;
mLayoutInflater = LayoutInflater.from(mContext);
mOnSkinPartClickListener = listener;
}
@Override
public int getCount() {
int size = mSkinPathList.size();
return size / 2 + size % 2;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = loadConvertView(convertView);
ViewHolder holder = (ViewHolder) convertView.getTag();
loadImages(position, holder);
addOnClickListeners(position, holder);
return convertView;
}
private View loadConvertView(View convertView) {
ViewHolder holder;
if (convertView == null) {
convertView = mLayoutInflater.inflate(R.layout.list_multiimage_skinpart, null);
holder = new ViewHolder();
holder.layout_left = convertView.findViewById(R.id.layoutLeft);
holder.layout_right = convertView.findViewById(R.id.layoutRight);
holder.left_number4 = (ImageView) convertView.findViewById(R.id.left_number4);
holder.left_number7 = (ImageView) convertView.findViewById(R.id.left_number7);
holder.right_number4 = (ImageView) convertView.findViewById(R.id.right_number4);
holder.right_number7 = (ImageView) convertView.findViewById(R.id.right_number7);
convertView.setTag(holder);
}
return convertView;
}
private void loadImages(int position, ViewHolder holder) {
loadLeftPanel(position, holder);
loadRightPanel(position, holder);
removeAnyBackgroundColors(holder);
}
private void removeAnyBackgroundColors(ViewHolder holder) {
holder.layout_left.setBackgroundColor(Color.parseColor("#00000000"));
holder.layout_right.setBackgroundColor(Color.parseColor("#00000000"));
}
private void loadLeftPanel(int position, ViewHolder holder) {
int listPosition = position * 2;
holder.left_number4.setImageBitmap(new BitmapDrawable(mContext.getResources(),
getLeftImagePath(listPosition)).getBitmap());
holder.left_number7.setImageBitmap(new BitmapDrawable(mContext.getResources(),
getRightImagePath(listPosition)).getBitmap());
}
private String getLeftImagePath(int listPosition) {
String path = mSkinPathList.get(listPosition) + File.separator;
return path + mGroupPart.getContainedSkinPartType()[0].getFileName();
}
private String getRightImagePath(int listPosition) {
String path = mSkinPathList.get(listPosition) + File.separator;
String image;
switch (mGroupPart) {
case NUMBERS:
image = mGroupPart.getContainedSkinPartType()[7].getFileName();
break;
case AMPM:
default:
image = mGroupPart.getContainedSkinPartType()[1].getFileName();
break;
}
return path + image;
}
private void loadRightPanel(int position, ViewHolder holder) {
int listPosition = position * 2 + 1;
if (mSkinPathList.size() > listPosition) {
holder.layout_right.setVisibility(View.VISIBLE);
holder.right_number4.setImageBitmap(new BitmapDrawable(mContext.getResources(),
getLeftImagePath(listPosition)).getBitmap());
holder.right_number7.setImageBitmap(new BitmapDrawable(mContext.getResources(),
getRightImagePath(listPosition)).getBitmap());
} else {
holder.layout_right.setVisibility(View.INVISIBLE);
}
}
private void addOnClickListeners(int position, ViewHolder holder) {
holder.layout_left.setOnClickListener(new ImageOnClickListener(position, false));
holder.layout_right.setOnClickListener(new ImageOnClickListener(position, true));
}
class ImageOnClickListener implements OnClickListener {
int mPosition;
boolean isRightImage;
public ImageOnClickListener(int position, boolean isRightImage) {
mPosition = position;
this.isRightImage = isRightImage;
}
@Override
public void onClick(View v) {
int position = getArrayListPosition();
mOnSkinPartClickListener.OnSkinPartClick(position, v);
setSelectedBackgroundColor(v);
}
private void setSelectedBackgroundColor(View v) {
if (mlastImageViewClicked != null) {
mlastImageViewClicked.setBackgroundColor(Color.parseColor("#00000000"));
}
v.setBackgroundColor(mContext.getResources().getColor(R.color.skinpart_selected));
mlastImageViewClicked = v;
}
private int getArrayListPosition() {
int position = mPosition * 2;
if (isRightImage)
position++;
return position;
}
}
static class ViewHolder {
View layout_left;
View layout_right;
ImageView left_number4;
ImageView left_number7;
ImageView right_number4;
ImageView right_number7;
}
}