package com.kickstarter.ui.viewholders; import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.kickstarter.KSApplication; import com.kickstarter.R; import com.kickstarter.libs.KSString; import com.kickstarter.libs.utils.ObjectUtils; import com.kickstarter.models.Photo; import com.kickstarter.models.Project; import com.squareup.picasso.Picasso; import javax.inject.Inject; import butterknife.Bind; import butterknife.BindString; import butterknife.ButterKnife; public final class ProjectContextViewHolder extends KSViewHolder { private Project project; private Context context; private final Delegate delegate; protected @Bind(R.id.project_context_image_view) ImageView projectContextImageView; protected @Bind(R.id.project_context_project_name) TextView projectNameTextView; protected @Bind(R.id.project_context_creator_name) TextView creatorNameTextView; protected @BindString(R.string.project_creator_by_creator) String projectCreatorByCreatorString; protected @Inject KSString ksString; public interface Delegate { void projectContextClicked(ProjectContextViewHolder viewHolder); } public ProjectContextViewHolder(final @NonNull View view, final @NonNull Delegate delegate) { super(view); this.delegate = delegate; this.context = view.getContext(); ButterKnife.bind(this, view); ((KSApplication) context.getApplicationContext()).component().inject(this); } @Override public void bindData(final @Nullable Object data) throws Exception { project = ObjectUtils.requireNonNull((Project) data, Project.class); } public void onBind() { final Photo photo = project.photo(); if (photo != null) { projectContextImageView.setVisibility(View.VISIBLE); Picasso.with(context).load(photo.full()).into(projectContextImageView); } else { projectContextImageView.setVisibility(View.INVISIBLE); } projectNameTextView.setText(project.name()); creatorNameTextView.setText(ksString.format( projectCreatorByCreatorString, "creator_name", project.creator().name() )); } @Override public void onClick(final @NonNull View view) { delegate.projectContextClicked(this); } }