package com.aero.control.adapter;
import android.content.Context;
import android.graphics.Typeface;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import com.aero.control.R;
import com.aero.control.helpers.PerApp.PerAppListener;
import java.util.List;
/**
* Created by Alexander Christ on 05.10.13.
*/
public class PerAppAdapter extends ArrayAdapter<AeroData> {
private Context context;
private int layoutResourceId;
private PerAppListener mPerAppListener;
private List<AeroData> data;
private final static Typeface font = Typeface.create("sans-serif-condensed", Typeface.NORMAL);
private boolean[] mCheckedState;
public PerAppAdapter(Context context, int layoutResourceId, List<AeroData> data, boolean[] checkedState) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
this.mCheckedState = checkedState;
}
public static class Holder {
ImageView header;
TextView content;
CheckBox check;
}
public void setPerAppListener(PerAppListener perAppListener) {
this.mPerAppListener = perAppListener;
}
@Override
public void clear() {
super.clear();
this.data.clear();
this.notifyDataSetChanged();
}
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
final Holder holder;
if (row == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(layoutResourceId, null);
holder = new Holder();
holder.header = (ImageView) row.findViewById(R.id.rowfolder);
holder.content = (TextView) row.findViewById((R.id.rowtext));
holder.check = (CheckBox) row.findViewById(R.id.rowcheck);
holder.content.setTypeface(font);
holder.check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CheckBox cb = (CheckBox) view;
int row_id = (Integer) cb.getTag();
data.get(row_id).isChecked = cb.isChecked();
mPerAppListener.OnAppItemClicked(row_id, holder.check.isChecked());
}
});
row.setTag(holder);
row.setTag(R.id.rowcheck, holder.check);
} else {
holder = (Holder) row.getTag();
}
final AeroData overview = data.get(position);
if (data != null) {
holder.header.setImageDrawable(overview.image);
holder.content.setText(overview.name);
// Set the tag before checking for existing data;
holder.check.setTag(position);
int row_id = (Integer) holder.check.getTag();
if (mCheckedState != null) {
data.get(row_id).isChecked = mCheckedState[row_id];
}
holder.check.setTag(row_id);
holder.check.setChecked(overview.isChecked);
} else {
Log.e("Aero",
"No Data found for adapter.");
}
return row;
}
}