package com.ogaclejapan.qiitanium.presentation.view; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.norbsoft.typefacehelper.TypefaceHelper; import com.ogaclejapan.qiitanium.R; import com.ogaclejapan.qiitanium.presentation.helper.PicassoHelper; import com.ogaclejapan.qiitanium.presentation.viewmodel.CommentViewModel; import com.ogaclejapan.rx.binding.Rx; import com.ogaclejapan.rx.binding.RxAction; import com.ogaclejapan.rx.binding.RxActions; import com.ogaclejapan.rx.binding.RxView; import com.squareup.picasso.Transformation; import rx.Subscription; import rx.subscriptions.Subscriptions; public class CommentListItemView extends AppView<CommentViewModel> { private Rx<TextView> commentText; private Rx<ImageView> authorThumbImage; private Rx<TextView> commentedAtText; private PicassoHelper picassoHelper; private Transformation roundedTransformation; public CommentListItemView(final Context context, final AttributeSet attrs) { super(context, attrs); if (isInEditMode()) { return; } picassoHelper = PicassoHelper.create(context); roundedTransformation = picassoHelper.roundedTransformation().oval(true).build(); } @Override protected void onViewCreated(final View view) { commentText = RxView.findById(view, R.id.list_item_comment_text); authorThumbImage = RxView.findById(view, R.id.list_item_comment_author_image); commentedAtText = RxView.findById(view, R.id.list_item_comment_timeago); TypefaceHelper.typeface(commentedAtText.get()); } @Override protected Subscription onBind(final CommentViewModel item) { return Subscriptions.from( commentText.bind(item.text(), RxActions.setText()), commentedAtText.bind(item.createdAt(), RxActions.setText()), authorThumbImage.bind(item.authorThumbnailUrl(), loadThumbnailAction()) ); } protected RxAction<ImageView, String> loadThumbnailAction() { return new RxAction<ImageView, String>() { @Override public void call(final ImageView imageView, final String url) { picassoHelper .load(url) .placeholder(R.drawable.ic_person_outline_white_24dp) .error(R.drawable.ic_person_outline_white_24dp) .resizeDimen(R.dimen.thumbnail_medium, R.dimen.thumbnail_medium) .transform(roundedTransformation) .into(imageView); } }; } }