package cgeo.geocaching.ui; import cgeo.geocaching.R; import cgeo.geocaching.models.Trackable; import cgeo.geocaching.ui.recyclerview.AbstractRecyclerViewAdapter; import cgeo.geocaching.ui.recyclerview.AbstractRecyclerViewHolder; import cgeo.geocaching.utils.TextUtils; import android.graphics.Paint; import android.support.annotation.NonNull; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import java.util.List; import butterknife.BindView; public class TrackableListAdapter extends AbstractRecyclerViewAdapter<TrackableListAdapter.ViewHolder> { public interface TrackableClickListener { void onTrackableClicked(final Trackable trackable); } @NonNull private final List<Trackable> trackables; @NonNull private final TrackableClickListener trackableClickListener; protected static final class ViewHolder extends AbstractRecyclerViewHolder { @BindView(R.id.trackable_image_brand) ImageView imageBrand; @BindView(R.id.trackable_name) TextView name; ViewHolder(final View view) { super(view); } } public TrackableListAdapter(@NonNull final List<Trackable> trackables, @NonNull final TrackableClickListener trackableClickListener) { this.trackables = trackables; this.trackableClickListener = trackableClickListener; } @Override public int getItemCount() { return trackables.size(); } @Override public ViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) { final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.trackable_item, parent, false); final ViewHolder viewHolder = new ViewHolder(view); viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View view) { trackableClickListener.onTrackableClicked(trackables.get(viewHolder.getItemPosition())); } }); return viewHolder; } @Override public void onBindViewHolder(final ViewHolder holder, final int position) { super.onBindViewHolder(holder, position); final Trackable trackable = trackables.get(position); holder.imageBrand.setImageResource(trackable.getIconBrand()); holder.name.setText(TextUtils.stripHtml(trackable.getName())); if (trackable.isMissing()) { holder.name.setPaintFlags(holder.name.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); } } }