package com.aero.control.adapter;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import com.aero.control.R;
import java.util.ArrayList;
import java.util.List;
/**
* Created by ac on 18.09.13.
*/
public class StatisticAdapter extends ArrayAdapter<statisticInit> {
private Context mContext;
private int mLayoutResourceId;
private List<statisticInit> mData = new ArrayList<statisticInit>();
private final static Typeface mFont = Typeface.create("sans-serif-condensed", Typeface.NORMAL);
private int mIndex = 0;
private boolean[] mIsVisible;
private String[] mTags = new String[0];
// Color Code, redundant but necessary
public static final String[] color_code = {
"#009688", /* Turquoise */
"#ff5722", /* Orange */
"#8bc34a", /* Midnight Blue */
"#03a9f4", /* Nephritis */
"#e51c23", /* Monza */
"#00bcd4", /* Wisteria */
"#607d8b", /* Peter River */
"#e91e63", /* Pomegrante */
};
public StatisticAdapter(Context context, int layoutResourceId, statisticInit[] data) {
super(context, layoutResourceId, data);
this.mLayoutResourceId = layoutResourceId;
this.mContext = context;
this.mIsVisible = new boolean[data.length];
this.mTags = new String[data.length];
for (statisticInit i : data) {
mData.add(i);
}
int j, i = 0;
for (boolean b : mIsVisible) {
mIsVisible[i] = false;
i++;
}
i = 0;
j = 0;
for (String c : mTags) {
if (i == color_code.length)
i = 0;
mTags[j] = color_code[i];
i++;
j++;
}
}
public static class Holder {
TextView frequency;
TextView timeInState;
TextView percentage;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
Holder holder;
if (mIndex == color_code.length)
mIndex = 0;
if (row == null) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(mLayoutResourceId, parent, false);
holder = new Holder();
holder.frequency = (TextView) row.findViewById(R.id.frequency);
holder.timeInState = (TextView) row.findViewById(R.id.timeInState);
holder.percentage = (TextView) row.findViewById((R.id.percentage));
holder.frequency.setTypeface(mFont);
holder.timeInState.setTypeface(mFont);
holder.percentage.setTypeface(mFont);
holder.frequency.setTextColor(Color.parseColor(color_code[mIndex]));
holder.timeInState.setTextColor(Color.parseColor(color_code[mIndex]));
holder.percentage.setTextColor(Color.parseColor(color_code[mIndex]));
mIndex++;
row.setTag(holder);
} else {
holder = (Holder) row.getTag();
}
final statisticInit overview = mData.get(position);
if(overview == null)
return row;
if (mData != null) {
if(overview.mFrequency != null)
holder.frequency.setText(overview.mFrequency);
if(overview.mTimeInState != null)
holder.timeInState.setText(overview.mTimeInState);
if(overview.mPercentage != null)
holder.percentage.setText(overview.mPercentage);
if (mTags[position] != null) {
holder.frequency.setTextColor(Color.parseColor(mTags[position]));
holder.timeInState.setTextColor(Color.parseColor(mTags[position]));
holder.percentage.setTextColor(Color.parseColor(mTags[position]));
}
} else {
Log.e("Aero",
"No Data found for adapter.");
}
if (!mIsVisible[position]) {
/* Small animation effect */
int delay = (position * 50);
Animation animation = AnimationUtils.loadAnimation(getContext(), R.anim.bottom_up);
animation.setStartOffset(delay);
row.setAnimation(animation);
mIsVisible[position] = true;
}
return row;
}
}