package de.avalax.fitbuddy.presentation.summary; import android.content.Context; import android.support.annotation.NonNull; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; import java.util.List; import de.avalax.fitbuddy.R; import de.avalax.fitbuddy.domain.model.finished_workout.FinishedWorkout; public class FinishedWorkoutAdapter extends ArrayAdapter<FinishedWorkout> { private int resource; private List<FinishedWorkout> finishedWorkouts; public FinishedWorkoutAdapter(Context context, int resource, List<FinishedWorkout> finishedWorkouts) { super(context, resource, finishedWorkouts); this.resource = resource; this.finishedWorkouts = finishedWorkouts; } @NonNull @Override public View getView(int position, View convertView, @NonNull ViewGroup parent) { FinishedWorkout finishedWorkout = finishedWorkouts.get(position); if (convertView == null) { View newConvertView = newConvertView(parent); newConvertView.setTag(createViewHolder(newConvertView, finishedWorkout)); return newConvertView; } FinishedWorkoutViewHolder holder = (FinishedWorkoutViewHolder) convertView.getTag(); holder.setFromFinishedWorkout(finishedWorkout); return convertView; } @NonNull private FinishedWorkoutViewHolder createViewHolder( View convertView, FinishedWorkout finishedWorkout) { FinishedWorkoutViewHolder holder = new FinishedWorkoutViewHolder(); holder.name = (TextView) convertView.findViewById(R.id.finished_workout_title); holder.date = (TextView) convertView.findViewById(R.id.finished_workout_date); holder.setFromFinishedWorkout(finishedWorkout); return holder; } private View newConvertView(@NonNull ViewGroup parent) { View convertView; String inflaterService = Context.LAYOUT_INFLATER_SERVICE; LayoutInflater vi = (LayoutInflater) getContext().getSystemService(inflaterService); convertView = vi.inflate(resource, parent, false); return convertView; } static class FinishedWorkoutViewHolder { TextView name; TextView date; void setFromFinishedWorkout(FinishedWorkout finishedWorkout) { name.setText(finishedWorkout.getName()); date.setText(finishedWorkout.getCreated()); } } }