package me.xiaopan.sketchsample.adapter.itemfactory; import android.content.Context; import android.view.ViewGroup; import android.widget.TextView; import butterknife.BindView; import me.xiaopan.assemblyadapter.AssemblyRecyclerItemFactory; import me.xiaopan.sketch.SketchImageView; import me.xiaopan.sketch.shaper.ImageShaper; import me.xiaopan.sketch.shaper.RoundRectImageShaper; import me.xiaopan.sketchsample.ImageOptions; import me.xiaopan.sketchsample.R; import me.xiaopan.sketchsample.adapter.BindAssemblyRecyclerItem; import me.xiaopan.sketchsample.bean.AppInfo; import me.xiaopan.sketchsample.widget.MyImageView; public class AppItemFactory extends AssemblyRecyclerItemFactory<AppItemFactory.AppItem> { @Override public boolean isTarget(Object o) { return o instanceof AppInfo; } @Override public AppItem createAssemblyItem(ViewGroup viewGroup) { return new AppItem(R.layout.list_item_app, viewGroup); } public class AppItem extends BindAssemblyRecyclerItem<AppInfo> { @BindView(R.id.image_installedApp_icon) MyImageView iconImageView; @BindView(R.id.text_installedApp_name) TextView nameTextView; @BindView(R.id.text_installedApp_info) TextView infoTextView; public AppItem(int itemLayoutId, ViewGroup parent) { super(itemLayoutId, parent); } @Override protected void onConfigViews(Context context) { iconImageView.setOptionsByName(ImageOptions.ROUND_RECT); ImageShaper imageShaper = iconImageView.getOptions().getImageShaper(); if (imageShaper instanceof RoundRectImageShaper) { RoundRectImageShaper roundRectImageShaper = (RoundRectImageShaper) imageShaper; iconImageView.setImageShape(SketchImageView.ImageShape.ROUNDED_RECT); iconImageView.setImageShapeCornerRadius(roundRectImageShaper.getOuterRadii()); } } @Override protected void onSetData(int i, AppInfo appInfo) { if (appInfo.isTempInstalled()) { iconImageView.displayInstalledAppIcon(appInfo.getId(), appInfo.getVersionCode()); } else { iconImageView.displayImage(appInfo.getApkFilePath()); } nameTextView.setText(appInfo.getName()); infoTextView.setText(String.format("v%s | %s", appInfo.getVersionName(), appInfo.getAppSize())); } } }