package me.xiaopan.sketchsample.adapter.itemfactory; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import butterknife.BindView; import me.xiaopan.assemblyadapter.AssemblyRecyclerItemFactory; import me.xiaopan.sketch.SketchImageView; import me.xiaopan.sketchsample.ImageOptions; import me.xiaopan.sketchsample.R; import me.xiaopan.sketchsample.adapter.BindAssemblyRecyclerItem; import me.xiaopan.sketchsample.bean.Star; import me.xiaopan.sketchsample.widget.MyImageView; public class StarCatalogItemFactory extends AssemblyRecyclerItemFactory<StarCatalogItemFactory.StarCatalogItem> { private int iconSize; private OnClickStarListener onClickStarListener; public StarCatalogItemFactory(OnClickStarListener onClickStarListener) { this.onClickStarListener = onClickStarListener; } @Override public boolean isTarget(Object o) { return o instanceof Star; } @Override public StarCatalogItem createAssemblyItem(ViewGroup viewGroup) { return new StarCatalogItem(R.layout.list_item_star_catalog, viewGroup); } public interface OnClickStarListener { void onClickImage(Star star); } public class StarCatalogItem extends BindAssemblyRecyclerItem<Star> { @BindView(R.id.image_starCatalogItem_icon) MyImageView iconImageView; @BindView(R.id.text_starCatalogItem_name) TextView nameTextView; public StarCatalogItem(int itemLayoutId, ViewGroup parent) { super(itemLayoutId, parent); } @Override protected void onConfigViews(Context context) { if (iconSize == 0) { int space = (int) context.getResources().getDimension(R.dimen.home_category_margin_border); int screenWidth = context.getResources().getDisplayMetrics().widthPixels; int itemWidth = (screenWidth - (space * 2)) / 3; iconSize = itemWidth - (space * 2); } getItemView().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (onClickStarListener != null) { onClickStarListener.onClickImage(getData()); } } }); iconImageView.setOptionsByName(ImageOptions.CIRCULAR_STROKE); iconImageView.setImageShape(SketchImageView.ImageShape.CIRCLE); ViewGroup.LayoutParams params = iconImageView.getLayoutParams(); params.width = iconSize; params.height = iconSize; iconImageView.setLayoutParams(params); params = nameTextView.getLayoutParams(); params.width = iconSize; nameTextView.setLayoutParams(params); } @Override protected void onSetData(int i, Star star) { nameTextView.setText(star.name); iconImageView.displayImage(star.avatarUrl); } } }