package com.alorma.github.ui.adapter.events.holders; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; import com.alorma.github.BuildConfig; import com.alorma.github.sdk.bean.dto.response.GithubEvent; import com.alorma.github.track.Tracker; import com.alorma.github.ui.adapter.base.RecyclerArrayAdapter; import com.alorma.github.utils.TimeUtils; import core.User; public abstract class EventViewHolder extends RecyclerView.ViewHolder { private RecyclerArrayAdapter.ItemCallback<GithubEvent> callback; private Tracker tracker; public EventViewHolder(View itemView) { super(itemView); inflateViews(itemView); } protected abstract void inflateViews(View itemView); public void populate(GithubEvent event) { long millis = System.currentTimeMillis(); populateAvatar(event.actor); populateContent(event); populateDate(TimeUtils.getTimeAgoString(event.created_at)); if (BuildConfig.DEBUG) { Log.i("Event: " + event.type, (System.currentTimeMillis() - millis) + "ms"); } itemView.setOnClickListener(view -> { if (tracker != null) { tracker.trackEvent("EventClick", "type", event.type.toString()); } if (callback != null) { callback.onItemSelected(event); } }); } protected abstract void populateAvatar(User actor); protected abstract void populateContent(GithubEvent event); protected abstract void populateDate(String date); public void setCallback(RecyclerArrayAdapter.ItemCallback<GithubEvent> callback) { this.callback = callback; } public void setTracker(Tracker tracker) { this.tracker = tracker; } }