package de.jeisfeld.augendiagnoselib.components;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import de.jeisfeld.augendiagnoselib.R;
import de.jeisfeld.augendiagnoselib.activities.SelectTwoPicturesActivity;
import de.jeisfeld.augendiagnoselib.util.TwoImageSelectionHandler;
import de.jeisfeld.augendiagnoselib.util.imagefile.EyePhoto;
/**
* Array adapter class to display a list of eye photos in order to select two of them.
*/
public class SelectTwoPicturesArrayAdapter extends ArrayAdapter<EyePhoto> {
/**
* The activity holding this adapter.
*/
private final SelectTwoPicturesActivity mActivity;
/**
* The array of eye photos displayed.
*/
private EyePhoto[] mEyePhotos;
/**
* Constructor for the adapter.
*
* @param activity The activity using the adapter.
* @param eyePhotos The array of eye photos to be displayed.
*/
public SelectTwoPicturesArrayAdapter(final SelectTwoPicturesActivity activity, @NonNull final EyePhoto[] eyePhotos) {
super(activity, R.layout.text_view_initializing, eyePhotos);
this.mActivity = activity;
this.mEyePhotos = eyePhotos;
}
/**
* Default adapter to be used by the framework.
*
* @param context The Context the view is running in.
*/
public SelectTwoPicturesArrayAdapter(final Context context) {
super(context, R.layout.text_view_initializing);
this.mActivity = (SelectTwoPicturesActivity) context;
}
/*
* Fill the display of the view (date and pictures) Details on selection are handled within the
* TwoImageSelectionHandler class.
*/
@Override
public final View getView(final int position, @Nullable final View convertView, @NonNull final ViewGroup parent) {
final EyeImageView eyeImageView;
if (convertView != null && convertView instanceof EyeImageView) {
eyeImageView = (EyeImageView) convertView;
eyeImageView.cleanEyePhoto();
}
else {
eyeImageView = (EyeImageView) LayoutInflater.from(mActivity).inflate(R.layout.adapter_select_two_pictures,
parent, false);
}
eyeImageView.setEyePhoto(mActivity, mEyePhotos[position], new Runnable() {
@Override
public void run() {
TwoImageSelectionHandler.getInstance().highlightIfSelected(eyeImageView);
}
});
TwoImageSelectionHandler.getInstance().prepareViewForSelection(mActivity, eyeImageView, mActivity.isStartedWithInputFolder());
return eyeImageView;
}
}