package net.naonedbus.widget.adapter.impl;
import java.util.List;
import net.naonedbus.R;
import net.naonedbus.bean.Bicloo;
import net.naonedbus.bean.Equipement;
import net.naonedbus.utils.ColorUtils;
import net.naonedbus.utils.DistanceUtils;
import net.naonedbus.utils.FormatUtils;
import net.naonedbus.widget.adapter.ArraySectionAdapter;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.util.SparseBooleanArray;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class BiclooArrayAdapter extends ArraySectionAdapter<Bicloo> {
private class ViewHolder {
TextView itemTitle;
TextView itemDescription;
TextView itemDistance;
ImageView itemSymbole;
}
private final Drawable mSymboleBackground;
private final int mSymboleResId;
private SparseBooleanArray mCheckedItemPositions = new SparseBooleanArray();
public BiclooArrayAdapter(final Context context, final List<Bicloo> objects) {
super(context, R.layout.list_item_equipement, objects);
mSymboleBackground = ColorUtils.getCircle(context.getResources().getColor(
Equipement.Type.TYPE_BICLOO.getBackgroundColorRes()));
mSymboleResId = Equipement.Type.TYPE_BICLOO.getDrawableRes();
}
@Override
public void bindView(final View view, final Context context, final int position) {
final ViewHolder holder = (ViewHolder) view.getTag();
final Bicloo bicloo = getItem(position);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
if (mCheckedItemPositions.get(position)) {
view.setBackgroundResource(R.color.list_activated);
} else {
view.setBackgroundResource(android.R.color.transparent);
}
}
holder.itemTitle.setText(bicloo.getName());
final Bicloo.Status status = bicloo.getStatus();
if (Bicloo.Status.UNKNOWN.equals(status)) {
holder.itemDescription.setText(R.string.bicloo_indisponible);
} else {
final int availableBikes = bicloo.getAvailableBike();
final int availableStands = bicloo.getAvailableBikeStands();
final String description = FormatUtils.formatBicloos(getContext(), availableBikes, availableStands);
holder.itemDescription.setText(description);
// Définir la distance.
if (bicloo.getDistance() == null) {
holder.itemDistance.setText("");
} else {
holder.itemDistance.setText(DistanceUtils.formatDist(bicloo.getDistance()));
}
}
}
@Override
public void bindViewHolder(final View view) {
final ViewHolder holder = new ViewHolder();
holder.itemTitle = (TextView) view.findViewById(R.id.itemTitle);
holder.itemDescription = (TextView) view.findViewById(R.id.itemDescription);
holder.itemSymbole = (ImageView) view.findViewById(R.id.itemSymbole);
holder.itemDistance = (TextView) view.findViewById(R.id.itemDistance);
holder.itemSymbole.setImageResource(mSymboleResId);
holder.itemSymbole.setBackgroundDrawable(mSymboleBackground);
view.setTag(holder);
}
public void setCheckedItemPositions(final SparseBooleanArray checkedItemPositions) {
mCheckedItemPositions = checkedItemPositions;
}
public void clearCheckedItemPositions() {
mCheckedItemPositions.clear();
}
}