package uk.co.traintrackapp.traintrack.adapter; import android.graphics.Color; import android.graphics.Paint; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import org.joda.time.DateTime; import java.util.ArrayList; import java.util.List; import uk.co.traintrackapp.traintrack.R; import uk.co.traintrackapp.traintrack.adapter.viewholders.ServiceViewHolder; import uk.co.traintrackapp.traintrack.model.Service; public class ServiceUndergroundRowAdapter extends RecyclerView.Adapter<ServiceViewHolder> { private List<Service> services; /** * A row adapter that is for underground services * @param services the services */ public ServiceUndergroundRowAdapter(ArrayList<Service> services) { this.services = services; } @Override public ServiceViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.row_service, parent, false); return new ServiceViewHolder(v); } @Override public void onBindViewHolder(ServiceViewHolder holder, int position) { Service service = services.get(position); holder.service = service; DateTime std = service.getScheduledTimeDeparture(); if (std != null) { holder.scheduledTime.setText(std.toString("HH:mm")); } DateTime eta = service.getEstimatedTimeDeparture(); if (eta != null) { holder.estimatedTime.setText(eta.toString("HH:mm")); } if (service.terminatesHere()) { holder.title.setText("Terminates Here"); if (service.isDelayedDeparting()) { holder.estimatedTime.setTextColor(Color.RED); holder.scheduledTime.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG); } else { holder.estimatedTime.setTextColor(Color.BLACK); holder.scheduledTime.setPaintFlags(0); } } else { holder.title.setText(service.getDestination().toString()); if (service.isDelayedDeparting()) { holder.estimatedTime.setTextColor(Color.RED); holder.scheduledTime.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG); } else { holder.estimatedTime.setTextColor(Color.BLACK); holder.scheduledTime.setPaintFlags(0); } } holder.subtitle.setText(service.getTubeLine().toString()); holder.platform.setText(service.getPlatform()); } @Override public int getItemCount() { return services.size(); } public void refresh(ArrayList<Service> services) { this.services = services; this.notifyDataSetChanged(); } }